{"id":45197515,"url":"https://github.com/dnnr1/chassi","last_synced_at":"2026-02-20T13:03:11.994Z","repository":{"id":335604448,"uuid":"1146419302","full_name":"dnnr1/chassi","owner":"dnnr1","description":"Offline VIN decoder library","archived":false,"fork":false,"pushed_at":"2026-01-31T07:13:00.000Z","size":1622,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-01-31T19:34:56.442Z","etag":null,"topics":["automobile","car","car-data","chassi","cli","decoder","iso-3779","offline","vehicle","veihicle-data","vin","vin-decode"],"latest_commit_sha":null,"homepage":"https://npmjs.com/package/chassi","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dnnr1.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-31T04:12:06.000Z","updated_at":"2026-01-31T07:13:00.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/dnnr1/chassi","commit_stats":null,"previous_names":["dnnr1/chassi"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/dnnr1/chassi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dnnr1%2Fchassi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dnnr1%2Fchassi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dnnr1%2Fchassi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dnnr1%2Fchassi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dnnr1","download_url":"https://codeload.github.com/dnnr1/chassi/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dnnr1%2Fchassi/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29651974,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-20T09:27:29.698Z","status":"ssl_error","status_checked_at":"2026-02-20T09:26:12.373Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automobile","car","car-data","chassi","cli","decoder","iso-3779","offline","vehicle","veihicle-data","vin","vin-decode"],"created_at":"2026-02-20T13:03:11.434Z","updated_at":"2026-02-20T13:03:11.988Z","avatar_url":"https://github.com/dnnr1.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg\n    src=\"https://github.com/dnnr1/chassi/blob/master/assets/images/chassi.png?raw=true\"\n    width=\"700\"\n    alt=\"VIN Decoder\"\n  /\u003e\n\u003c/p\u003e\n\n# chassi\n\nOffline VIN decoder library.\n\n## Installation\n\n```bash\nnpm install chassi\n```\n\n## Usage\n\n### Library\n\n```typescript\nimport { decodeVin, validateVin } from \"chassi\";\n\ndecodeVin(\"WVWZZZ3CZWE123456\");\n// {\n//   vin: 'WVWZZZ3CZWE123456',\n//   valid: true,\n//   manufacturer: 'Volkswagen',\n//   country: 'Germany',\n//   countryCode: 'DE',\n//   year: 2014,\n//   possibleYears: [1984, 2014],\n//   model: 'Golf',\n//   confidence: 1,\n//   disclaimer: '...'\n// }\n\nvalidateVin(\"WVWZZZ3CZWE123456\");\n// {\n//   valid: true,\n//   vin: 'WVWZZZ3CZWE123456',\n//   normalizedVin: 'WVWZZZ3CZWE123456',\n//   errors: [],\n//   details: {\n//     lengthValid: true,\n//     charactersValid: true,\n//     checkDigitValid: true,\n//     providedCheckDigit: 'Z',\n//     calculatedCheckDigit: 'Z'\n//   }\n// }\n```\n\n### CLI\n\n```bash\nnpx chassi decode WVWZZZ3CZWE123456\n\n# === VIN Decode Result ===\n#\n# VIN:          WVWZZZ3CZWE123456\n# Valid:        Yes\n# Manufacturer: Volkswagen\n# Country:      Germany\n# Year:         2014\n# Model:        Golf\n# Confidence:   100%\n#\n# Components:\n#   WMI:        WVW\n#   VDS:        ZZZ3CZ\n#   VIS:        WE123456\n#   Year Code:  W\n#   Plant Code: E\n#   Sequential: 123456\n```\n\n```bash\nnpx chassi validate WVWZZZ3CZWE123456\n\n# === VIN Validation Result ===\n#\n# VIN:           WVWZZZ3CZWE123456\n# Valid:         Yes\n# Length OK:     Yes\n# Characters OK: Yes\n# Check Digit:   Valid\n```\n\n```bash\nnpx chassi check 1HGBH41JXMN109186\n\n# === Check Digit Verification ===\n#\n# VIN:        1HGBH41JXMN109186\n# Provided:   X\n# Calculated: X\n# Applicable: Yes (North American)\n# Valid:      Yes\n```\n\n#### CLI Fields\n\n| Field         | Command               | Description                                                                               |\n| ------------- | --------------------- | ----------------------------------------------------------------------------------------- |\n| VIN           | all                   | The normalized (uppercase) VIN                                                            |\n| Valid         | decode/validate/check | Whether the VIN passes all applicable validations                                         |\n| Manufacturer  | decode                | Manufacturer name or \"Unknown\"                                                            |\n| Country       | decode                | Country of origin or \"Unknown\"                                                            |\n| Year          | decode                | Most likely model year or \"Unknown\"                                                       |\n| Model         | decode                | Inferred model or \"Unknown\"                                                               |\n| Confidence    | decode                | How much data was matched (0-100%)                                                        |\n| Length OK     | validate              | Whether the VIN has exactly 17 characters                                                 |\n| Characters OK | validate              | Whether all characters are valid (no I, O, Q, or special chars)                           |\n| Check Digit   | validate              | Whether the check digit at position 9 is correct                                          |\n| Provided      | check                 | The character at position 9 of the VIN                                                    |\n| Calculated    | check                 | The expected check digit per ISO 3779 weighted sum mod 11                                 |\n| Applicable    | check                 | Whether check digit validation applies — only North American VINs (US, CA, MX) require it |\n\n## VIN Structure\n\n| Position | Name  | Description                   |\n| -------- | ----- | ----------------------------- |\n| 1-3      | WMI   | World Manufacturer Identifier |\n| 4-9      | VDS   | Vehicle Descriptor Section    |\n| 9        | Check | Check digit (ISO 3779)        |\n| 10       | Year  | Model year code               |\n| 11       | Plant | Assembly plant                |\n| 12-17    | Seq   | Sequential number             |\n\n## API Reference\n\n### `decodeVin(vin, options?)`\n\nReturns decoded vehicle information from the VIN.\n\n| Field           | Type       | Description                                                                     |\n| --------------- | ---------- | ------------------------------------------------------------------------------- |\n| `vin`           | `string`   | The original VIN provided                                                       |\n| `valid`         | `boolean`  | Whether the VIN passes all applicable validations (structure + check digit)     |\n| `manufacturer`  | `string?`  | Manufacturer name (e.g. `\"Volkswagen\"`)                                         |\n| `country`       | `string?`  | Country of origin (e.g. `\"Germany\"`)                                            |\n| `countryCode`   | `string?`  | ISO country code (e.g. `\"DE\"`)                                                  |\n| `year`          | `number?`  | Most likely model year                                                          |\n| `possibleYears` | `number[]` | All possible model years (year codes cycle every 30 years)                      |\n| `model`         | `string?`  | Inferred model name, if a known VDS pattern matches                             |\n| `confidence`    | `number`   | Confidence score from `0` to `1` based on how much data was matched             |\n| `components`    | `object?`  | VIN components (WMI, VDS, VIS, etc.). Only present if `includeComponents: true` |\n| `disclaimer`    | `string`   | Legal disclaimer about the inferred data                                        |\n\n**Options:**\n\n| Option              | Type      | Default | Description                                        |\n| ------------------- | --------- | ------- | -------------------------------------------------- |\n| `strict`            | `boolean` | `false` | Reject VINs with invalid check digit (even non-NA) |\n| `includeComponents` | `boolean` | `false` | Include parsed VIN components in the result        |\n\n### `validateVin(vin, options?)`\n\nReturns detailed validation results for a VIN.\n\n| Field                          | Type      | Description                                                 |\n| ------------------------------ | --------- | ----------------------------------------------------------- |\n| `valid`                        | `boolean` | Whether the VIN passes all applicable validations           |\n| `vin`                          | `string`  | The original VIN provided                                   |\n| `normalizedVin`                | `string`  | Uppercase, stripped of spaces and dashes                    |\n| `errors`                       | `array`   | List of validation errors (see below)                       |\n| `details.lengthValid`          | `boolean` | Whether the VIN has exactly 17 characters                   |\n| `details.charactersValid`      | `boolean` | Whether all characters are valid (A-H, J-N, P, R-Z, 0-9)    |\n| `details.checkDigitValid`      | `boolean` | Whether the check digit (position 9) is correct             |\n| `details.checkDigitApplicable` | `boolean` | Whether check digit validation applies to this VIN's region |\n| `details.providedCheckDigit`   | `string?` | The check digit character found at position 9               |\n| `details.calculatedCheckDigit` | `string?` | The expected check digit calculated via ISO 3779            |\n\n**Options:**\n\n| Option             | Type      | Default | Description                                               |\n| ------------------ | --------- | ------- | --------------------------------------------------------- |\n| `strictCheckDigit` | `boolean` | `false` | When `true`, enforces check digit validation for all VINs |\n\n\u003e **Check digit applicability:** North American vehicles (US, CA, MX) require check digit validation per 49 CFR § 565. European and other regions do not use the ISO 3779 check digit system, so the check digit position may contain any valid character. When `checkDigitApplicable` is `false`, the check digit is not validated and `checkDigitValid` is always `true`.\n\n### Error Codes\n\n| Code                  | Description                                       |\n| --------------------- | ------------------------------------------------- |\n| `VIN_EMPTY`           | No VIN was provided                               |\n| `INVALID_LENGTH`      | VIN does not have exactly 17 characters           |\n| `FORBIDDEN_CHARACTER` | VIN contains I, O, or Q (not allowed by ISO 3779) |\n| `INVALID_CHARACTER`   | VIN contains a character outside A-HJ-NPR-Z0-9    |\n| `INVALID_CHECK_DIGIT` | Check digit at position 9 does not match expected |\n\n## Data Sources\n\n### Standards\n\n| Standard                                                                            | Description                   |\n| ----------------------------------------------------------------------------------- | ----------------------------- |\n| [ISO 3779:2009](https://www.iso.org/standard/52200.html)                            | VIN content and structure     |\n| [ISO 3780:2009](https://www.iso.org/standard/52199.html)                            | WMI code assignment           |\n| [SAE J853](https://www.sae.org/standards/content/j853_201511/)                      | VIN systems specification     |\n| [49 CFR § 565](https://www.ecfr.gov/current/title-49/subtitle-B/chapter-V/part-565) | U.S. federal VIN requirements |\n\n### Databases\n\n| Source                                            | Usage                             |\n| ------------------------------------------------- | --------------------------------- |\n| [NHTSA vPIC](https://vpic.nhtsa.dot.gov/decoder/) | WMI validation, manufacturer data |\n\n### Notes\n\n- **WMI codes**: Assigned by SAE International under ISO 3780\n- **Model patterns**: Community-sourced from observed VINs (not official)\n- **Year codes**: Defined by ISO 3779, cycle every 30 years\n\n\u003e ⚠️ Model inference is approximate. Always verify with official sources for critical applications.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdnnr1%2Fchassi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdnnr1%2Fchassi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdnnr1%2Fchassi/lists"}