TSV Barcode Decoder
Parse tab-separated barcode data into rows and columns
Our free TSV barcode decoder parses tab-separated values stored in QR codes or other barcode data into rows and columns. TSV uses tab characters between fields and newlines between records, making it useful when text values contain commas. For example, a tab can separate Name and Quantity without using a comma.
Need to decode TSV barcodes in your app?
Copy the example below to get started using our free Barcode Parser API. No API key needed.
barcode=$'Name\x09Product\x09Quantity\x0aJohn\x09Widget\x0910'
curl -sS -G https://parser.orcascan.com/ \
--data-urlencode "barcode=$barcode" \
--data-urlencode 'type=tsv'
// Node.js 18+
var barcode = "Name\tProduct\tQuantity\nJohn\tWidget\t10";
var url = "https://parser.orcascan.com/?barcode=" + encodeURIComponent(barcode) + "&type=tsv";
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\tProduct\tQuantity\nJohn\tWidget\t10"
url = "https://parser.orcascan.com/?barcode=" + quote(barcode, safe="") + "&type=tsv"
with urlopen(url) as response:
print(json.load(response))
using System;
using System.Net.Http;
var barcode = "Name\tProduct\tQuantity\nJohn\tWidget\t10";
var url = "https://parser.orcascan.com/?barcode=" + Uri.EscapeDataString(barcode) + "&type=tsv";
using var client = new HttpClient();
Console.WriteLine(await client.GetStringAsync(url));
package main
import (
"io"
"net/http"
"net/url"
"os"
)
func main() {
barcode := "Name\tProduct\tQuantity\nJohn\tWidget\t10"
endpoint := "https://parser.orcascan.com/?barcode=" + url.QueryEscape(barcode) + "&type=tsv"
res, err := http.Get(endpoint)
if err != nil { panic(err) }
defer res.Body.Close()
io.Copy(os.Stdout, res.Body)
}
<?php
$barcode = "Name\x09Product\x09Quantity\x0aJohn\x09Widget\x0910";
$url = "https://parser.orcascan.com/?barcode=" . rawurlencode($barcode) . "&type=tsv";
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\tProduct\tQuantity\nJohn\tWidget\t10";
String url = "https://parser.orcascan.com/?barcode=" +
URLEncoder.encode(barcode, StandardCharsets.UTF_8) + "&type=tsv";
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\tProduct\tQuantity\nJohn\tWidget\t10";
var url = "https://parser.orcascan.com/?barcode=" + encodeURIComponent(barcode) + "&type=tsv";
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 TSV barcodes?
Import a spreadsheet of barcodes and automatically extract their data into separate columns.
Decode barcodes in bulk →Need to extract TSV 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
How are columns and rows encoded in TSV?
A tab character separates fields, and a line break normally separates records. Tabs may be invisible when displayed as plain text.
What is the difference between TSV and CSV encoding?
TSV uses tab delimiters, while CSV commonly uses commas and quoting rules. Both structure text; neither is a barcode symbology.
Why does decoded TSV sometimes look like a single line?
A viewer may collapse or hide tab and newline characters. A TSV-aware parser preserves those delimiters to reconstruct columns and rows.
Need help tracking TSV barcodes?
We've helped organizations of all sizes tackle barcode challenges, chat with our team live for help to find a solution.