VIN Barcode Decoder

Read VIN barcodes to extract vehicle identification numbers and manufacturer codes

VIN

Our free VIN barcode decoder reads the 17-character Vehicle Identification Number from a barcode image or entered text. The first three characters commonly form the World Manufacturer Identifier (WMI), while other positions encode vehicle attributes and manufacturing information according to the applicable VIN rules.

Need to decode VIN 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=$'1HGCM82633A004352'
curl -sS -G https://parser.orcascan.com/ \
    --data-urlencode "barcode=$barcode" \
    --data-urlencode 'type=vin'
// Node.js 18+
var barcode = "1HGCM82633A004352";
var url = "https://parser.orcascan.com/?barcode=" + encodeURIComponent(barcode) + "&type=vin";

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

barcode = "1HGCM82633A004352"
url = "https://parser.orcascan.com/?barcode=" + quote(barcode, safe="") + "&type=vin"

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

var barcode = "1HGCM82633A004352";
var url = "https://parser.orcascan.com/?barcode=" + Uri.EscapeDataString(barcode) + "&type=vin";

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

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

func main() {
    barcode := "1HGCM82633A004352"
    endpoint := "https://parser.orcascan.com/?barcode=" + url.QueryEscape(barcode) + "&type=vin"
    res, err := http.Get(endpoint)
    if err != nil { panic(err) }
    defer res.Body.Close()
    io.Copy(os.Stdout, res.Body)
}
<?php
$barcode = "1HGCM82633A004352";
$url = "https://parser.orcascan.com/?barcode=" . rawurlencode($barcode) . "&type=vin";

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 = "1HGCM82633A004352";
        String url = "https://parser.orcascan.com/?barcode=" +
            URLEncoder.encode(barcode, StandardCharsets.UTF_8) + "&type=vin";
        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 = "1HGCM82633A004352";
var url = "https://parser.orcascan.com/?barcode=" + encodeURIComponent(barcode) + "&type=vin";
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 VIN barcodes?

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

Decode barcodes in bulk →

Need to extract VIN 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 many characters does a standard modern VIN contain?

A standard modern VIN has 17 characters. The letters I, O and Q are excluded to reduce confusion with 1 and 0.

What do WMI, VDS and VIS mean in a VIN?

WMI is the manufacturer identifier at positions 1–3; VDS covers descriptive positions 4–9; VIS is the identifying section at positions 10–17. Exact meanings vary by region and manufacturer.

How is the VIN check digit decoded?

Under North American VIN rules, position 9 is a check digit derived from weighted values of the other characters. The check character can be 0–9 or X, where X represents 10.

Need help tracking VIN barcodes?

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