Skip to content
Limited Edition DevTools

IDs-LE

Find every UUID, ULID, NanoID, ObjectId and Snowflake, and decode the time inside it.

FreeOpen sourceMITNo network access

The command-line tool and its MCP server are written and tested. The VS Code extension is not written yet, so there is nothing to install from the Marketplace or Open VSX — those links appear here when it ships rather than before.

No editor in the loop? ids-le mcp runs the same engine as an MCP server, so an agent can call extract_ids over stdio, with no editor and no Node, and cargo install ids-le puts the same check in a terminal. Every way to install it.

ids-le audit.json
audit.json:2:17  uuid v7  019ff344-cc00-7abc-8def-0123456789ab  2026-08-12T00:00:00.000Z
audit.json:3:17  ulid  01KZSM9K00ABCDEFGH12345678  2026-08-12T00:00:00.000Z
audit.json:4:18  objectid  6a7bb780a1b2c3d4e5f60718  2026-08-12T00:00:00.000Z
audit.json:5:16  refused (ambiguous_kind)  5d41402abc4b2a76b9719d911017c592  — 32 hex digits are an unhyphenated UUID and an MD5 digest in equal measure; nothing in this document chooses between them
audit.json:6:16  refused (nil_or_max)  00000000-0000-0000-0000-000000000000  — the nil UUID: 128 zero bits, which RFC 9562 defines as naming nothing
3 identifiers in 1 file
2 runs refused
exit 0
A real run against one JSON document of identifiers pulled from a log. The summary above is what a person reads; the same findings go to stdout as JSON, which is what a script reads.

What IDs-LE does

An identifier usually records when and where something was made, and almost none of that is readable by eye. IDs-LE finds every UUID, ULID, NanoID, MongoDB ObjectId and Snowflake in a tree, says what each one is, and decodes the timestamp inside the ones that carry a clock — six bit layouts over three epochs, one of which starts in 1582, all reported as the same ISO-8601 UTC string. It refuses rather than guesses: thirty-two hex digits are an unhyphenated UUID and an MD5 digest in equal measure, so that run comes back as a row with a named reason instead of a confident wrong answer.

What people use it for

Date an id with no lookup

A v7 UUID, a ULID, an ObjectId or a Snowflake in a log resolves to an instant without a database in the loop.

Stop a regex mislabelling a digest

A run that fits two schemes is reported as ambiguous, not classified as whichever pattern happened to match first.

Sweep a repo for placeholders

The nil UUID, a v4 that is plainly not random, and a timestamp before 1990 each come back named rather than dropped.

Install IDs-LE

Command lineComing soon

cargo install ids-le

Not on crates.io yet — v0.1.0 builds from the repository today, and this command starts working the day it publishes. Follow the repository.

VS CodeComing soon

ext install nolindnaidoo.ids-le

The extension is not written yet, so this id resolves to nothing on the Marketplace. It is the id it will take. Follow the repository.

Cursor / VSCodiumComing soon

cursor --install-extension OffensiveEdge.ids-le

Same again for the forks, which resolve Open VSX rather than the Marketplace. Follow the repository.

Zed

ids-le mcp

Works in Zed today — add the command above as a custom MCP server from the agent panel, and extract_ids appears in its tool list. There is no one-click listing in Zed's extension registry yet.

AI agents

ids-le mcp

Runs IDs-LE's engine as an MCP server over stdio, so an agent can call extract_ids with no editor and no Node. The binary is the server — there is nothing else to install.

Where it ships

One engine, 6 places to get it. The ids differ by registry — copy the one for the editor you use.

Where IDs-LE lives

The other 15

Extract string values from JSON, YAML, CSV, TOML, INI, and .env — for i18n.

Extract numeric values from JSON, YAML, CSV, TOML, INI, and .env.

Pull every file path out of JS/TS imports, JSON, HTML, CSS, TOML, CSV, and .env files.

Extract and analyze colors from CSS, SCSS, LESS, Stylus, HTML, JS/TS, and SVG.

Extract URLs from documentation, configs, and code.

Extract date and time data from logs, configs, and code.

Extract every quantity with its unit, normalised to one base unit so two configs can be compared.

Find every IP address, CIDR block and MAC address in a tree, normalized and classified.

Find, test, and validate the regular expressions in any file — match reports and built-in ReDoS screening.

Check whether a page is actually scrapeable before you burn hours debugging.

Find where the same dependency is constrained differently across a repository’s manifests.

Audit translation catalogues for missing keys, placeholder drift and structural mismatches.

Detect and sanitize credentials, tokens, API keys, and private keys locally — before you commit.

Spot missing keys across your .env files — automatic checks, a status bar counter, and a markdown report.

Find the Unicode that hides meaning — Trojan Source controls, invisibles, homoglyphs, mixed scripts.