DevTools Logo
All posts

Proto, JS AST, GeoJSON, ASN.1 & Parquet Inspectors

September 5, 2026 · DevTools

protobuf
ast
geojson
asn1
parquet

Schemas and binary formats punish guessing. The antidote is parsing everything into visible structure first. This guide covers the Protobuf AST Explorer, JavaScript AST Visualizer, GeoJSON to TopoJSON Converter, ASN.1 DER Decoder, and Parquet File Viewer.

Read .proto files and JavaScript as data, not text

The Protobuf AST Explorer detects the syntax = "proto2" or "proto3" declaration, then parses messages, enums, services, and RPC methods into a structured tree with fields normalized to repeated or optional rules and type references resolved against the file's own declarations. Export the tree as JSON and review questions become queries: which messages gained a field, which enums lack a zero value.

visualizeJavaScriptAst runs the Acorn parser with the latest ECMAScript grammar in module mode and returns a collapsible tree with node counts and deterministic JSON, capped at a traversal depth of 20. Parse failures come back as structured errors pointing at the offending syntax. When a codemod misbehaves, confirm the arrow function, await, and optional chain are the nodes you think they are.

Shrink map payloads with quantized topology

convertGeoJson validates a FeatureCollection, computes its bounding box, renders every geometry as WKT, and builds a quantized TopoJSON topology where shared borders are stored once. Quantization takes 0 for full precision or any value of at least 2 — higher values use a finer grid and preserve more precision — and round-tripping through topologyToFeature verifies nothing structurally broke:

OutputContents
TopoJSONshared-arc topology with quantization applied
WKTLINESTRING, MULTILINESTRING, and sibling geometry text
Bounding boxmin and max pairs for viewport fitting
Feature JSONrecovered features for before-and-after diffing

Quantize a copy for the web map, keep full precision for analysis, and compare feature counts after conversion — a mismatch means the input had invalid geometry worth fixing upstream.

Decode certificates and preview columnar files

decodeAsn1 accepts hex or raw bytes and walks tag-length-value structures recursively, recording tag class (universal, application, context-specific, private), tag number including high-tag-number form, constructed bit, depth, offsets, and header lengths, with a classic offset-plus-hex-plus-ASCII dump alongside. Universal tags resolve to names — INTEGER, BIT STRING, OCTET STRING, OBJECT IDENTIFIER, SEQUENCE, SET, UTF8String, UTCTime, GeneralizedTime, and the rest — so a certificate unwraps into readable layers. Truncated input throws with the exact offset. Paste the DER hex from any certificate error and read down until the structure diverges from expectation.

Parquet File Viewer opens local files with the hyparquet reader — metadata plus object rows, no upload — mapping schema elements to column names and types with the total row count and a bounded preview of the first rows. Checking the schema before writing the loader query catches renamed columns and widened integers early, when the fix is a one-line change instead of a backfill.

Try Them