Skip to main content

ultravin

CI Status PyPI Version License

An extremely fast, fully offline NHTSA vPIC VIN decoder, written in Rust.

VINs decoded per second: ultravin 111,496 batched / 19,331 single-core vs corgi v3 83, corgi v2 33, NHTSA MSSQL 22.5, NHTSA Postgres 19.5
VINs decoded per second over a random corpus, single sequential caller — ultravin also batches across cores.

  • ⚡️ ~0.045 ms per decode — orders of magnitude faster than the NHTSA SQL procedures (corgi, Postgres, MSSQL)
  • 🦀 Pure Rust core, shipped as a Python library
  • 📦 The entire vPIC vehicle database baked into the wheel
  • 🔌 Fully offline — no network, no database, no data files at runtime
  • 🎯 Byte-for-byte parity with vPIC's spVinDecode, verified across every decodable VIN
  • 🐍 Installable via pip, with a CLI and a library API
  • 🧵 Batches in parallel to ~110,000 VIN/s on 10 cores

ultravin is a faithful port of NHTSA's spVinDecode — the SQL procedure behind vPIC — reimplemented in Rust and verified against the reference Postgres implementation. Because the vehicle database ships inside the binary, decoding needs no network, no database server, and no data files. Install it and decode.

Getting Started

Installation

uv add ultravin

Prebuilt wheels require Python 3.10+ and nothing else — the data ships inside the wheel.

Usage

From Python:

import ultravin

r = ultravin.decode("1HGCM82633A004352")

r["model_year"]         # 2003
r["wmi"]                # '1HG'
r["check_digit_valid"]  # True
r["error_codes"]        # [0]

# `elements` is the full decoded attribute list; index it by variable name:
attrs = {e["variable"]: e["value"] for e in r["elements"]}
attrs["Make"]           # 'HONDA'
attrs["Model"]          # 'Accord'

decode(vin) returns a dict with keys vin, wmi, descriptor, model_year, error_codes, check_digit_valid, corrected_vin, and elements — a list of per-attribute dicts (group_name, variable, value, element_id, source, …). Decode many at once with decode_batch:

results = ultravin.decode_batch(["1HGCM82633A004352", "5YJ3E1EA7JF000000"])

From the command line:

ultravin decode 1HGCM82633A004352          # human-readable table
ultravin decode 1HGCM82633A004352 --json   # full JSON
ultravin decode-batch vins.txt --json      # one VIN per line
ultravin version

Benchmarks

How many VINs each engine decodes per second, single sequential caller, over an identical random corpus of 5,000 valid VINs (measured over 60 s; Apple Silicon, 10 cores):

engine VIN/s vs ultravin (1 core)
ultravin — batched, 10 cores 111,496 ~5.8× faster
ultravin — 1 core 19,331
corgi v3 — @cardog/corgi (binary index) ~83 ~233× slower
corgi v2 — @cardog/corgi 2.0.1 (SQLite) ~33 ~586× slower
NHTSA MSSQL — spVinDecode (SQL Server) 22.5 ~859× slower
NHTSA Postgres — spvindecode 19.5 ~991× slower
NHTSA vPIC web API — public rate limit ~10 ~1,933× slower

ultravin runs in-process with the database embedded — no server, no round-trip. The corgi figures are derived from its project's published per-VIN latency (~12 ms v3 / ~30 ms v2, not re-measured here). The NHTSA Postgres and MSSQL oracles run the unmodified spVinDecode over localhost; MSSQL is SQL Server under amd64 emulation on Apple Silicon, so its number understates native hardware — ultravin is still ~859× faster. The NHTSA vPIC web API row is its published ~10 req/s rate limit, not a decode time — a hard ceiling regardless of hardware. Methodology and reproduction: docs/BENCHMARKS.md.

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ultravin-0.0.5.tar.gz (21.0 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

ultravin-0.0.5-cp310-abi3-win_arm64.whl (21.8 MB view details)

Uploaded CPython 3.10+Windows ARM64

ultravin-0.0.5-cp310-abi3-win_amd64.whl (21.8 MB view details)

Uploaded CPython 3.10+Windows x86-64

ultravin-0.0.5-cp310-abi3-win32.whl (21.7 MB view details)

Uploaded CPython 3.10+Windows x86

ultravin-0.0.5-cp310-abi3-musllinux_1_2_x86_64.whl (22.2 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ x86-64

ultravin-0.0.5-cp310-abi3-musllinux_1_2_i686.whl (22.1 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ i686

ultravin-0.0.5-cp310-abi3-musllinux_1_2_armv7l.whl (22.1 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ ARMv7l

ultravin-0.0.5-cp310-abi3-musllinux_1_2_aarch64.whl (22.1 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ ARM64

ultravin-0.0.5-cp310-abi3-manylinux_2_31_riscv64.whl (21.9 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.31+ riscv64

ultravin-0.0.5-cp310-abi3-manylinux_2_28_aarch64.whl (21.9 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.28+ ARM64

ultravin-0.0.5-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.0 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ x86-64

ultravin-0.0.5-cp310-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl (22.0 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ s390x

ultravin-0.0.5-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (22.0 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ppc64le

ultravin-0.0.5-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (21.9 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARMv7l

ultravin-0.0.5-cp310-abi3-manylinux_2_12_i686.manylinux2010_i686.whl (21.9 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.12+ i686

ultravin-0.0.5-cp310-abi3-macosx_11_0_arm64.whl (22.5 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

ultravin-0.0.5-cp310-abi3-macosx_10_12_x86_64.whl (21.9 MB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

File details

Details for the file ultravin-0.0.5.tar.gz.

File metadata

  • Download URL: ultravin-0.0.5.tar.gz
  • Upload date:
  • Size: 21.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for ultravin-0.0.5.tar.gz
Algorithm Hash digest
SHA256 013a46d72a1564d3ecc1ebb1c60217ba290e6114bc432bc97e615d0b1de15b47
MD5 7732d78a9bf6a96a2260577e8670de17
BLAKE2b-256 427506be607816de9a9e23cee94541229e154b130c05a28542ecac1cd96dab80

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-0.0.5.tar.gz:

Publisher: release.yaml on blackthorn-interstellar/ultravin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultravin-0.0.5-cp310-abi3-win_arm64.whl.

File metadata

  • Download URL: ultravin-0.0.5-cp310-abi3-win_arm64.whl
  • Upload date:
  • Size: 21.8 MB
  • Tags: CPython 3.10+, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for ultravin-0.0.5-cp310-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 dc3480d5c633e7fa20bcec61a49efe24984229337eb8ced53b31d06c5d5730b9
MD5 99e9b41f608250a8ed7db243a5dcfc23
BLAKE2b-256 cbd18af31d4514958445a1e2cc5f679f6de076352c738496fa6c690026d90cf2

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-0.0.5-cp310-abi3-win_arm64.whl:

Publisher: release.yaml on blackthorn-interstellar/ultravin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultravin-0.0.5-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: ultravin-0.0.5-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 21.8 MB
  • Tags: CPython 3.10+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for ultravin-0.0.5-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 a4c1b0e1e610706cc662ac5cd297c11be38ab08f4d1031d28aee4b8d17c552bb
MD5 af29e10d1a2abb9ce21ecb2698c9c14b
BLAKE2b-256 d54281ef51a96785c65f89006347cb68e6851d78c68da8f445d9d4caa12fb3b3

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-0.0.5-cp310-abi3-win_amd64.whl:

Publisher: release.yaml on blackthorn-interstellar/ultravin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultravin-0.0.5-cp310-abi3-win32.whl.

File metadata

  • Download URL: ultravin-0.0.5-cp310-abi3-win32.whl
  • Upload date:
  • Size: 21.7 MB
  • Tags: CPython 3.10+, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for ultravin-0.0.5-cp310-abi3-win32.whl
Algorithm Hash digest
SHA256 11e6eb6b925f84e3189a6cd75cea33243845d7122158b79edec5069e6086f185
MD5 38f1178ebf094c119137271853d559c9
BLAKE2b-256 631b29bddeeccf9fe992838b47a276d127a62e8a45caab1fb60d879f67ebb68e

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-0.0.5-cp310-abi3-win32.whl:

Publisher: release.yaml on blackthorn-interstellar/ultravin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultravin-0.0.5-cp310-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for ultravin-0.0.5-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 16ed727752d511f1090ec32b8ffe4ebaa2b742fca3356a2b0ca4e4f674fcb1cb
MD5 7d4791d9184884a7c3c3583c84a95771
BLAKE2b-256 23f35e990317afe8f12906669e89e9c5d7a6b5a61d21056f06f722ab97ecead0

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-0.0.5-cp310-abi3-musllinux_1_2_x86_64.whl:

Publisher: release.yaml on blackthorn-interstellar/ultravin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultravin-0.0.5-cp310-abi3-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for ultravin-0.0.5-cp310-abi3-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 0f52f921017913d5c3e60d63f54983c0e836435897059e7d4beb99b9db25db0c
MD5 096ea0ab5d30f6372ff661df26d259c1
BLAKE2b-256 593ef76755e12a142f1a2f184f7706cc99968d5a6c67f933fcd884137fa9144a

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-0.0.5-cp310-abi3-musllinux_1_2_i686.whl:

Publisher: release.yaml on blackthorn-interstellar/ultravin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultravin-0.0.5-cp310-abi3-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for ultravin-0.0.5-cp310-abi3-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 4332fff500124b9c71cc3af4eb8d2e8c0a93f0e90fbd6968824d73450df2f783
MD5 4333adcd2a0479aeeb91e437b1aab09a
BLAKE2b-256 b75f2b864d6de91e8cc4aac0a3aee1b1685a2ee5044f20d59688dd32965024ad

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-0.0.5-cp310-abi3-musllinux_1_2_armv7l.whl:

Publisher: release.yaml on blackthorn-interstellar/ultravin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultravin-0.0.5-cp310-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for ultravin-0.0.5-cp310-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 e182a35e927e5da72ba4f223031c7ffca879ec6050cc096d95ccfd8c3545b81c
MD5 3dd2e1f83ec3b1d90041ba660045ccc0
BLAKE2b-256 0af1baafabae06194f8f7b656094181c04ebc9db7dda2eb991223373723c8b51

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-0.0.5-cp310-abi3-musllinux_1_2_aarch64.whl:

Publisher: release.yaml on blackthorn-interstellar/ultravin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultravin-0.0.5-cp310-abi3-manylinux_2_31_riscv64.whl.

File metadata

File hashes

Hashes for ultravin-0.0.5-cp310-abi3-manylinux_2_31_riscv64.whl
Algorithm Hash digest
SHA256 254b2e91f2fe9c32241beb83008a2489278aeea7cb273024315fad1c6598c2c5
MD5 4eaf51abfb54e59e1462e700f7ed32dc
BLAKE2b-256 5171b903c7326176c6fc2b09cc35016f4a1f70ce95ee8c997b228f8af1d99a08

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-0.0.5-cp310-abi3-manylinux_2_31_riscv64.whl:

Publisher: release.yaml on blackthorn-interstellar/ultravin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultravin-0.0.5-cp310-abi3-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for ultravin-0.0.5-cp310-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 4b91b336d03265f0579d2d5e0500f7fb662f0946259d60308e85694088cf0bf8
MD5 6daa69ac8a30b35e0b204829cefe411c
BLAKE2b-256 181abdad99fc78bea7190b68aac8b07548fd93ba8eebb3cac34671bfb0e1f10a

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-0.0.5-cp310-abi3-manylinux_2_28_aarch64.whl:

Publisher: release.yaml on blackthorn-interstellar/ultravin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultravin-0.0.5-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ultravin-0.0.5-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ad4c367e1ce1a6af8b45f1617bb220e93d2e66a04a0761581ca5407343acc608
MD5 f7f35f416e569c48890d81f3cecab2b6
BLAKE2b-256 3dbd46d07da7684844d787dd164e71e427ece34cac754a72030dbafbfe722bd0

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-0.0.5-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yaml on blackthorn-interstellar/ultravin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultravin-0.0.5-cp310-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for ultravin-0.0.5-cp310-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 8a4c4ff107cc7136190bb748b6f91d06ec2be0ee9820559abdbe9fc9d22d23e7
MD5 5113d520a14ce72ae5b931530496a4f7
BLAKE2b-256 7d7a756a4e4dc1cca8a6ee2c0fa85f64e1efac97081e70ea1d814484ee5410bb

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-0.0.5-cp310-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl:

Publisher: release.yaml on blackthorn-interstellar/ultravin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultravin-0.0.5-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for ultravin-0.0.5-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 4b7342d3c1cf8555346ac743032c7520ebd4f863eda8cd2ce09b8155be65e3e3
MD5 4d256e753be70d92feed07a65c983e09
BLAKE2b-256 0a5540606d052c27647f9d2a1977a85259089dfdbebd59298ce804edd36cfbae

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-0.0.5-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl:

Publisher: release.yaml on blackthorn-interstellar/ultravin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultravin-0.0.5-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for ultravin-0.0.5-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 c2f5f34503ea5eed1d74031bfc29fbdbc8c703d597b1952388a34306eb951930
MD5 c56b7755bb26034bb4b0c1d9a35aa55c
BLAKE2b-256 3c7cfda9779a7c65cdc6ef3ef1c2d7836157df33b187c3801645c622c97d761c

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-0.0.5-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl:

Publisher: release.yaml on blackthorn-interstellar/ultravin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultravin-0.0.5-cp310-abi3-manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for ultravin-0.0.5-cp310-abi3-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 1140beae159ee50064dc6848b2b8e8f09b254d957b50c5921d4cc3f635c2cb04
MD5 6378cc2e4b5a26d766414a1771456afe
BLAKE2b-256 d750df85af178531dab9c38345f2c0d6302a8fd5da88b623303a96a9bc9cdfa1

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-0.0.5-cp310-abi3-manylinux_2_12_i686.manylinux2010_i686.whl:

Publisher: release.yaml on blackthorn-interstellar/ultravin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultravin-0.0.5-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ultravin-0.0.5-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8f6e0b9eceb1c8dab7517f8acd897ce991670c2b6b1995ddcd116d8f9f55e470
MD5 790788d6eb55b8e565894bc3f78ccf39
BLAKE2b-256 e8b78213383574c8c39c92d19251d7188e3474fdb9ca1a9aca8ac086e71a1c14

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-0.0.5-cp310-abi3-macosx_11_0_arm64.whl:

Publisher: release.yaml on blackthorn-interstellar/ultravin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultravin-0.0.5-cp310-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for ultravin-0.0.5-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 6d362c806bcede46dccea01c91f8b2075a6cc3a657aecd3116bdfabbc2aea2bc
MD5 9c0973e8c4abfd70d28a1b51de7eb271
BLAKE2b-256 6e66e73e2caf894d7aabb46404ca0bd81f4483065135239cc2b659ba758d4e0e

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-0.0.5-cp310-abi3-macosx_10_12_x86_64.whl:

Publisher: release.yaml on blackthorn-interstellar/ultravin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

2.1.1

17 files

2.1.0

17 files

2.0.1

17 files

2.0.0

17 files

1.2.0

17 files

1.1.0

17 files

1.0.4

17 files

1.0.3

17 files

1.0.2

17 files

0.0.7

17 files

0.0.6

17 files

This release

0.0.5 This release

17 files

0.0.4

17 files

0.0.3

17 files

0.0.2

17 files

0.0.1

17 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page