Protobuf Schema Workbench

Protobuf Schema Workbench

Open a small proto3 schema and local binary to see each wire tag, value and zero-based byte span. Add an earlier schema for a conservative field-number review. The original binary stays unchanged for download, and unknown or wire-mismatched fields retain exact raw bytes. This bounded inspector is not a full protoc implementation.

1. Schema and wire message

Supported subset: one proto3 root, nested/scalar/repeated fields. Each schema ≤ 32 KiB, wire ≤ 64 KiB, ≤ 128 declared fields. No imports, maps, enums or oneof.

Paste a supported schema and wire hex or load the example.

Local browser analysis. Original bytes remain unchanged; unknown TLVs are reported exactly.

Comments & questions

Protobuf Schema Workbench

Open a small proto3 schema and local binary to see each wire tag, value and zero-based byte span. Add an earlier schema for a conservative field-number review. The original binary stays unchanged for download, and unknown or wire-mismatched fields retain exact raw bytes. This bounded inspector is not a full protoc implementation.

Key features

  • Parse a restricted proto3 subset: one root message, nested and scalar fields, repeated/optional and reservations
  • Decode VARINT, I64, LEN and I32 with nested and packed field trees
  • Show inclusive byte spans and exact raw TLV hex for unknown or wire-mismatched fields
  • Compare field numbers, names, types, repetition and reservations across schema versions
  • Download JSON findings and byte-for-byte original binary without upload

How to use

  1. Paste or open a supported current .proto file and binary message or hex.
  2. Optionally add the previous schema for a field-number comparison.
  3. Analyze field trees, byte offsets, unknown TLVs and compatibility findings.
  4. Download the JSON report or unchanged original binary.

Use cases

  • Find a truncated or overflowing varint in a captured message
  • Identify unknown field numbers without losing raw bytes
  • Review whether a removed field number was reserved
  • Check a proposed schema for possible field-number reuse

Frequently asked questions

Are unknown fields preserved?

The original binary download is byte-for-byte identical to the input. The report also contains each unknown field's raw tag, length and payload bytes. This tool does not re-encode a modified message or guarantee behavior in other software.

Does a renamed field always mean number reuse?

No. The wire identifies fields by number and wire type, not source name. A changed name on the same number is marked for review because the tool cannot infer intent. A type change is conservatively marked breaking.

Which .proto syntax is supported?

Only proto3 with one top-level message, nested messages, supported scalars, repeated/optional, packed true/false and simple reserved numbers/names. Imports, enums, maps, oneof, services, groups, extensions and custom options are rejected.

How are offsets counted?

Offsets are zero-based byte positions in the original binary. Displayed ranges include both first and final bytes. Packed child offsets point within the parent's payload.

Is this a compatibility guarantee?

No. It screens a bounded set of field-number, type, repetition and reservation changes. It does not prove application semantics, generated API stability, presence behavior, JSON mapping or every protobuf rule.

Are my files uploaded?

No. Selected files are read into browser memory and decoded in this tab. Downloads happen only when requested.

Privacy

Schemas and binary bytes stay in this browser tab; this tool does not submit them to a server API or save them automatically.

References

Related Tools

Binary Protocol DesignerHex File EditorJSON Schema ValidatorWasm Module InspectorHreflang Matrix CheckerAST Query PlaygroundContainer Build GraphDependency Graph ExplorerSemver Range LabCron Schedule AuditorPatch Review WorkbenchSource Map ExplorerLocalization Catalog AuditorStructured Data ReviewerHTTP Archive AnalyzerWebhook Signature LabGraphQL Schema LabAvro Schema EvolutionLocal SQL WorkbenchSchema Form BuilderMesh Repair WorkbenchPipe Network LabRobot Arm Kinematics LabThermal Network LabBeam Response LabGear Train DesignerTolerance Stackup LabSensor Calibration FitPCB Stackup PlannerDigital Filter DesignerNetwork Reachability MapSun Shadow MapGPS Error SimulatorDigital Logic SimulatorAnalog Circuit LabMechanism Linkage LabAnalysis Mesh GeneratorOpenAPI Contract InspectorDatabase Migration PlannerDimensional Equation CheckerTruss Force LabBoolean Minimization LabControl Response LabQueueing Simulation LabGeofence Event SimulatorCoordinate Reference LabSurvey Traverse LabRaster Classification LabChoropleth Design LabMap Print ComposerRaster Reprojection LabElevation Contour MakerTerrain Viewshed LabWatershed DelineatorMap Tile PackagerText File Encoding WorkbenchFilesystem Portability AuditorSBOM License ExplorerFile Signature Auditornpm Lockfile Conflict ResolverSource Secret AuditorOffline Web Package BuilderCertificate Chain InspectorTorrent Metainfo InspectorChunked File PackagerEncrypted File VaultDuplicate File FinderArchive WorkbenchDesign Token ManagerSpacing Token DesignerResponsive Type SystemPackaging Dieline DesignerSVG Icon Sprite PackerFlex Layout PlaygroundCSS Grid PlaygroundRegex Equivalence LabMarkdown Repository AuditorLog Template MinerResponsive Layout AuditorEmail Template PreviewInternal Link GraphState Machine TesterPetri Net SimulatorGit History VisualizerCurl Request WorkbenchBinary Patch WorkbenchFile Signature WorkbenchAPI Mock SandboxSchema Column MapperEvent Log SessionizerER Diagram DesignerTime Series Gap AuditorStratified Data SplitterData Lineage DesignerDecision Tree LabData Anonymization WorkbenchData Expectation RunnerBasket Pattern AnalyzerRobots Policy TesterSEO HTML AuditorAccessibility Structure AuditorSyndication Feed WorkbenchIndexNow Payload BuilderCrawl Log AnalyzerCSP Policy WorkbenchSearch Performance AnalyzerCSV Formula Risk AuditorCORS Response SimulatorCache Header LabCookie Policy InspectorWeb Vitals Trace LabSitemap Health AuditorBatch File RenamerFile Manifest VerifierFolder Space MapFolder Difference ReviewerRoute Order OptimizerGeoJSON Map EditorPolygon Overlay LabCartographic Label PlacerSpatial Table JoinGeoJSON Topology AuditorGPX Track AnalyzerTrack Privacy RedactorCSV Table JoinCSV Pivot WorkbenchScientific Data ProfilerTabular Cleaning WorkbenchRecord ReconciliationData Dictionary BuilderCanonical Graph AuditorRedirect Plan TesterHTTP response and ping reference testBrowser and System InformationJSON ↔ YAML ConverterXML ↔ JSON ConverterHTML FormatterJavaScript MinifierMock Data Generator.gitignore GeneratorLicense GeneratorUser-Agent ParserPassword Strength CheckerCode to ImageXML FormatterHTTP Status Code LookupMIME Type LookupJS & SQL String EscapeCSS Box Shadow GeneratorCSS Gradient GeneratorIndent ConverterNumber Base ConverterUnicode Escape ConverterUnicode InspectorJSON Structure DiffMarkdown Table GeneratorBase64 EncoderJSON FormatterURL EncoderSQL FormatterCron Expression GeneratorRegex TesterUUID GeneratorHash GeneratorTimestamp ConverterJWT DecoderHTML Entity ConverterMarkdown PreviewCSS MinifierMeta Tag GeneratorJSON ↔ CSVCase ConverterImage to Base64
Explore all Dev Tools tools →Image/Media →Text/Convert →Life/Fun →