CCCD QR Code Decoder

Extract Vietnamese citizen ID numbers, names and dates of birth

CCCD

Our free CCCD QR code decoder reads encoded fields from Vietnamese citizen identity card QR data, including the card number, name, date of birth and other available identity details. CCCD stands for Căn cước công dân. A decoded record is personal information, not proof that a card or identity is authentic.

Need to decode CCCD 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=$'000000000001|000000001|Nguyễn Văn Mẫu|11112000|Nam|Số 1 Phố Huế, Hai Bà Trưng, Hà Nội|22022023||||'
curl -sS -G https://parser.orcascan.com/ \
    --data-urlencode "barcode=$barcode" \
    --data-urlencode 'type=cccd'
// Node.js 18+
var barcode = "000000000001|000000001|Nguyễn Văn Mẫu|11112000|Nam|Số 1 Phố Huế, Hai Bà Trưng, Hà Nội|22022023||||";
var url = "https://parser.orcascan.com/?barcode=" + encodeURIComponent(barcode) + "&type=cccd";

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

barcode = "000000000001|000000001|Nguyễn Văn Mẫu|11112000|Nam|Số 1 Phố Huế, Hai Bà Trưng, Hà Nội|22022023||||"
url = "https://parser.orcascan.com/?barcode=" + quote(barcode, safe="") + "&type=cccd"

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

var barcode = "000000000001|000000001|Nguyễn Văn Mẫu|11112000|Nam|Số 1 Phố Huế, Hai Bà Trưng, Hà Nội|22022023||||";
var url = "https://parser.orcascan.com/?barcode=" + Uri.EscapeDataString(barcode) + "&type=cccd";

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

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

func main() {
    barcode := "000000000001|000000001|Nguyễn Văn Mẫu|11112000|Nam|Số 1 Phố Huế, Hai Bà Trưng, Hà Nội|22022023||||"
    endpoint := "https://parser.orcascan.com/?barcode=" + url.QueryEscape(barcode) + "&type=cccd"
    res, err := http.Get(endpoint)
    if err != nil { panic(err) }
    defer res.Body.Close()
    io.Copy(os.Stdout, res.Body)
}
<?php
$barcode = "000000000001|000000001|Nguyễn Văn Mẫu|11112000|Nam|Số 1 Phố Huế, Hai Bà Trưng, Hà Nội|22022023||||";
$url = "https://parser.orcascan.com/?barcode=" . rawurlencode($barcode) . "&type=cccd";

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 = "000000000001|000000001|Nguyễn Văn Mẫu|11112000|Nam|Số 1 Phố Huế, Hai Bà Trưng, Hà Nội|22022023||||";
        String url = "https://parser.orcascan.com/?barcode=" +
            URLEncoder.encode(barcode, StandardCharsets.UTF_8) + "&type=cccd";
        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 = "000000000001|000000001|Nguyễn Văn Mẫu|11112000|Nam|Số 1 Phố Huế, Hai Bà Trưng, Hà Nội|22022023||||";
var url = "https://parser.orcascan.com/?barcode=" + encodeURIComponent(barcode) + "&type=cccd";
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 CCCD barcodes?

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

Decode barcodes in bulk →

Need to extract CCCD 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 fields separated in a Vietnamese CCCD QR code?

Common CCCD QR payloads use the pipe character (|) to separate values such as ID number, name, date of birth and other card details. The decoder must preserve empty fields and their order.

What information can be read from a CCCD QR code?

Depending on the card generation and payload layout, it may contain an identification number, name, date of birth, sex, address and issue-related information.

Why can two CCCD QR codes have different fields?

Card generations and encoding conventions can differ. A decoder should interpret the observed field layout rather than assume that every CCCD QR code has the same number of fields.

Need help tracking CCCD barcodes?

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