JSON to Proto Converter
Generate a draft Protobuf (.proto) schema from sample JSON. Runs locally in your browser.
JSON
Protobuf Schema
syntax = "proto3";message Root {string order_id = 1;Customer customer = 2;repeated Item items = 3;string status = 4;message Customer {string name = 1;string email = 2;}message Item {string sku = 1;int32 quantity = 2;int64 unit_price_cents = 3;}}
The Kafka IDE
Register and evolve Protobuf schemas in Kafma
Kafma is a desktop app for Kafka. Register schemas, compare version changes, and publish updates with Schema Registry compatibility checks.
macOS Windows Linux

JSON to Proto FAQ
- Why did userId become user_id in the Protobuf schema?
- This converter uses snake_case field names, so userId becomes user_id. ProtoJSON accepts userId for that field. If names collide, the converter adds a suffix; check those names before using the schema.
- Why did "1999" become int64 in the Protobuf schema?
- Integer strings that fit the signed 64-bit range become int64; larger values stay string. If the value is an ID that must stay a string, copy the schema into your editor or Kafma and change its type before registering.
- Why is a JSON key missing from the Protobuf schema?
- Fields containing only null or empty arrays are omitted because their types cannot be inferred. Provide a concrete sample value and convert again.
- Why does a mixed-type array cause an error?
- A repeated field needs one element type. This converter rejects incompatible mixtures such as [1, "a"], but can combine compatible numeric types. Use a consistent element type or model the alternatives explicitly in your schema.
- Why is the root message named Root?
- The converter uses Root as a placeholder name. Copy the schema into your editor or Kafma, then rename it before registering.
- How do I use this schema with Kafka?
- Review the inferred field types and names, then register the schema in Kafka Schema Explorer. Use the registered schema to generate and serialize a payload in Kafka Console and produce it to a topic.
- Is my input uploaded?
- No. Conversion runs in your browser. Your input and generated output are not uploaded.
- Can I generate sample JSON from a .proto schema?
- Use the Proto to JSON converter to generate sample JSON from a .proto schema.