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.4.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.4-cp310-abi3-win_arm64.whl (21.8 MB view details)

Uploaded CPython 3.10+Windows ARM64

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

Uploaded CPython 3.10+Windows x86-64

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

Uploaded CPython 3.10+Windows x86

ultravin-0.0.4-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.4-cp310-abi3-musllinux_1_2_i686.whl (22.1 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ i686

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

Uploaded CPython 3.10+musllinux: musl 1.2+ ARMv7l

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

Uploaded CPython 3.10+musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.10+manylinux: glibc 2.31+ riscv64

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

Uploaded CPython 3.10+manylinux: glibc 2.28+ ARM64

ultravin-0.0.4-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.4-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.4-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.4-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.4-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.4-cp310-abi3-macosx_11_0_arm64.whl (22.5 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

ultravin-0.0.4-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.4.tar.gz.

File metadata

  • Download URL: ultravin-0.0.4.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.4.tar.gz
Algorithm Hash digest
SHA256 fe68ad9912aadd48e6814461dee78c06761ded01e3aebb20cd1b2f0ec230a6e8
MD5 fa23447412e5d5317db2d3a2ee0fb92d
BLAKE2b-256 4458e6d287f10393fb3cbe56065d80a441afea7baa313d2fb2d2295d1701aa62

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-0.0.4.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.4-cp310-abi3-win_arm64.whl.

File metadata

  • Download URL: ultravin-0.0.4-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.4-cp310-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 07da44a8f5f1d89d39274519ea21f0ac05f8b3fe1f55542633091d60e09af2c0
MD5 0331b8b80b32dd5c220e852403660e07
BLAKE2b-256 3eedb5b145e844c6a2c034e1bb83fefcb167e779dd34f85f94403f3b61d3fbe4

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-0.0.4-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.4-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: ultravin-0.0.4-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.4-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 7089ba53bd9c3193588deacc5cce04b3256783f8052d1276b03196432c1332b1
MD5 af201624230e1a97303540360367dd7c
BLAKE2b-256 c74c95e75a2baa426d8011a544a5b3a9a6ac1138253f3fd2bc69afc7e368231e

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-0.0.4-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.4-cp310-abi3-win32.whl.

File metadata

  • Download URL: ultravin-0.0.4-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.4-cp310-abi3-win32.whl
Algorithm Hash digest
SHA256 effb985b4fd7a56d9203518da89108ac4f4f6b99958333ffc74d76918eb95499
MD5 2a2c6f54bde0a4ba9e618887c04699a7
BLAKE2b-256 5988a7b80afacc44e3b8af6148334a77c25b91fb18134aca1dae3703c7ae4f62

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-0.0.4-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.4-cp310-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for ultravin-0.0.4-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 bfdb4338a8e35cd06ea7d39e3c94e7d35d14df3fd6e3b2559a7397fbc9258e2b
MD5 ef370681356a7de0c05d8af5b263ef28
BLAKE2b-256 d561ae6f6906ddf4f6cf5b6c998554ad2ced723f65dd81ec4f55dd4b45d0ef1c

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-0.0.4-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.4-cp310-abi3-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for ultravin-0.0.4-cp310-abi3-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 7facd6e6a6db4db1eb8c6ab1874071f7cf99b16245194ac9a574ee37dd31a199
MD5 cb398c5a226bef4834fbfadb9a748ce6
BLAKE2b-256 1988a14f3ba9d58a767f40cf5c876d13165b6504177c6b8d23fd86ad898b6369

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-0.0.4-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.4-cp310-abi3-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for ultravin-0.0.4-cp310-abi3-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 af4797fb6a7e5406b9e928d574680d837bce332ba1e08504e6a5d3bebe5fbf69
MD5 5ebb93ba598cdcbc1426e0268af9e6bd
BLAKE2b-256 b1619569e7ad488af98e7a084a0563462ae51d0f9e15ba99102bf5bcb8da6458

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-0.0.4-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.4-cp310-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for ultravin-0.0.4-cp310-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 3d1729f2a0cc86d21c85a8f26637c54f502934849d17e711da1403b58f0583ab
MD5 f7bbec76af8ac7f0675a7369b666676b
BLAKE2b-256 0cde4c3e358a569b0f36590726d813894ca2c08652cd147189e7783272f5c7df

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-0.0.4-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.4-cp310-abi3-manylinux_2_31_riscv64.whl.

File metadata

File hashes

Hashes for ultravin-0.0.4-cp310-abi3-manylinux_2_31_riscv64.whl
Algorithm Hash digest
SHA256 a1be483b89c0891170c7a2378786fb8378b2c1463cf322c7bfef2937d7e74abb
MD5 781ef4af1e526282121239c759fdf33a
BLAKE2b-256 5a336ffadfc3b68dec60bf351b53a2baf59715350222dd289b6890dbd0bfd29a

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-0.0.4-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.4-cp310-abi3-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for ultravin-0.0.4-cp310-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 bb0454161a99c2ee04196b96a30997b5c403b728b5f0e0d0bbb7c322679269e4
MD5 099776a3a64db83db93a1068e175944a
BLAKE2b-256 8f9efdc0b364cb1c841a830338cd634de001987974c8ab6fb881446f9e289cab

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-0.0.4-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.4-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ultravin-0.0.4-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 699ca00f48816d882f5cdca84008037a0ffb329b18e6730aa656d0959368849b
MD5 caf5b143f08a7d6c715c070d409197f8
BLAKE2b-256 3904ac18318c9b95f3def7c5663e9200942efef4f0aed3ed8f291fd47b112110

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-0.0.4-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.4-cp310-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for ultravin-0.0.4-cp310-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 a13d49c8a7786c88716ac26f2c5227f87b18111b64684cb1e914c6190f8c30e7
MD5 c4bf909cd1e1c7748c2c71a3bff77e2e
BLAKE2b-256 4ad3a871cccbf7031b28c6e17cc4f9265d77e38cd4edd465ebab8e24b5ba5775

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-0.0.4-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.4-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for ultravin-0.0.4-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 df65ab370745d67b5172e49e3e33a471fac1575ae296f91f1fd4f6a35be73d58
MD5 482a883470b98499bc0d16030cc0a2a6
BLAKE2b-256 dd2d265bf1da62fd1c8f860bf67d8ceab67dc585e0d0f97df2570fafcdefa71a

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-0.0.4-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.4-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for ultravin-0.0.4-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 9829623ea1a460b60c651eeaeafb066a9c33826ca1f5d2928484470f1e22db42
MD5 e5d8f70eb58cd3fed8643de817a6158d
BLAKE2b-256 c68d97f6701ad22033df25399aac3b66fa3abc2e5b66d9c56b47aadd2131e943

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-0.0.4-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.4-cp310-abi3-manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for ultravin-0.0.4-cp310-abi3-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 d217383a893e28ef35d49c2cf48efe5937701f951e81e1c7409d6b92b177d2f3
MD5 1fd934fe2551904e592dabffd2725cab
BLAKE2b-256 aff654277f376d88560e586e604fc46ea63a38a28a36821bdf53b1fb119db4a0

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-0.0.4-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.4-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ultravin-0.0.4-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4cd6898b513eac3d6647ae77a136e333849b86a4de1b6c7ada90115bc5f80e81
MD5 8dbce61eeacbff33cf85f7e61331b11d
BLAKE2b-256 6a6097dbb933b7296058bee1a9ccf50962b28812005cb8a2468981cbc49bbeac

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-0.0.4-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.4-cp310-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for ultravin-0.0.4-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 adfa70d7a23c646f42df294acb23a9f1c5432fa240b3b1ad744a9f1092f61c59
MD5 9effb6e38425ef69090f196a3156be0f
BLAKE2b-256 0de51a4944a18a592ed5b122d657c94e25d94e8b45f702354946fb280309cb95

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-0.0.4-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

0.0.5

17 files

This release

0.0.4 This release

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