PSV Barcode Decoder

Parse pipe-separated barcode data into rows and columns

PSV

Our free PSV barcode decoder parses pipe-separated values stored in QR codes or other barcode data. In PSV, the | character separates fields, so Name|Product|Quantity can become three columns. Pipe-separated text is useful for simple records, but escaping literal pipes depends on the format used by the sender.

Need to decode PSV barcodes in your app?

Copy the example below to get started using our free Barcode Parser API. No API key needed.

cURL Node.js Python C# Go PHP Java HTML
barcode=$'Name|Product|Quantity\x0aJohn|Widget|10'
curl -sS -G https://parser.orcascan.com/ \
    --data-urlencode "barcode=$barcode" \
    --data-urlencode 'type=psv'
// Node.js 18+
var barcode = "Name|Product|Quantity\nJohn|Widget|10";
var url = "https://parser.orcascan.com/?barcode=" + encodeURIComponent(barcode) + "&type=psv";

fetch(url)
    .then(function(res) { return res.json(); })
    .then(console.log);
import json
from urllib.parse import quote
from urllib.request import urlopen

barcode = "Name|Product|Quantity\nJohn|Widget|10"
url = "https://parser.orcascan.com/?barcode=" + quote(barcode, safe="") + "&type=psv"

with urlopen(url) as response:
    print(json.load(response))
using System;
using System.Net.Http;

var barcode = "Name|Product|Quantity\nJohn|Widget|10";
var url = "https://parser.orcascan.com/?barcode=" + Uri.EscapeDataString(barcode) + "&type=psv";

using var client = new HttpClient();
Console.WriteLine(await client.GetStringAsync(url));
package main

import (
    "io"
    "net/http"
    "net/url"
    "os"
)

func main() {
    barcode := "Name|Product|Quantity\nJohn|Widget|10"
    endpoint := "https://parser.orcascan.com/?barcode=" + url.QueryEscape(barcode) + "&type=psv"
    res, err := http.Get(endpoint)
    if err != nil { panic(err) }
    defer res.Body.Close()
    io.Copy(os.Stdout, res.Body)
}
<?php
$barcode = "Name|Product|Quantity\x0aJohn|Widget|10";
$url = "https://parser.orcascan.com/?barcode=" . rawurlencode($barcode) . "&type=psv";

echo file_get_contents($url);
import java.net.URI;
import java.net.URLEncoder;
import java.net.http.*;
import java.nio.charset.StandardCharsets;

class BarcodeParser {
    public static void main(String[] args) throws Exception {
        String barcode = "Name|Product|Quantity\nJohn|Widget|10";
        String url = "https://parser.orcascan.com/?barcode=" +
            URLEncoder.encode(barcode, StandardCharsets.UTF_8) + "&type=psv";
        var request = HttpRequest.newBuilder(URI.create(url)).build();
        var response = HttpClient.newHttpClient().send(
            request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.body());
    }
}
<!doctype html>
<html>
<body>
<pre id="result">Loading...</pre>
<script>
var barcode = "Name|Product|Quantity\nJohn|Widget|10";
var url = "https://parser.orcascan.com/?barcode=" + encodeURIComponent(barcode) + "&type=psv";
fetch(url)
    .then(function(res) { return res.json(); })
    .then(function(json) {
        document.getElementById("result").textContent = JSON.stringify(json, null, 2);
    });
</script>
</body>
</html>

Need to decode lots of PSV barcodes?

Import a spreadsheet of barcodes and automatically extract their data into separate columns.

Decode barcodes in bulk →

Need to extract PSV data as you scan?

Scan barcodes with your phone and automatically capture their data in a shared spreadsheet.

Scan with your phone →

Frequently asked questions

What is a pipe-separated barcode payload?

It is text in which the vertical bar character (|) separates fields. Line breaks can separate records when the producer uses a row-based structure.

How does PSV differ from CSV and TSV?

PSV uses pipes as delimiters, CSV usually uses commas and TSV uses tabs. These are text-data layouts rather than barcode symbologies.

How is a literal pipe encoded inside a PSV field?

There is no single universal PSV escape rule. The producer and decoder must agree on quoting or escaping so a literal | is not mistaken for a delimiter.

Need help tracking PSV barcodes?

We've helped organizations of all sizes tackle barcode challenges, chat with our team live for help to find a solution.