ToolZoneX
Blog

JSON-LD to Framed Converter

Paste a JSON-LD document and a frame to reshape the document into the exact structure the frame describes. Free online developer tool.

Paste JSON-LD Document
Paste Frame
Framed JSON-LD
Framed output will appear here...

Free JSON-LD to Framed Converter

Paste a JSON-LD document and a frame to reshape the document into the exact structure the frame describes — matching by type and property, then rebuilding a document in that shape. Runs entirely in your browser using the official jsonld.js reference implementation.

How to Use It

Paste a JSON-LD document into the first box and a frame into the second, or click "Load Example" to see a working pair. Framing matches nodes in your document against the constraints in the frame (required properties, specific @type values, or specific property values) and rebuilds a document containing only the matching branches, arranged in the shape the frame specifies.

Example

The sample frame requires a name property to be present, which the sample document satisfies — framing returns the document with name and homepage intact under the frame's own context. Change the frame to require a property your document doesn't have, and the result comes back empty, since framing only keeps nodes matching every constraint.

Common Use Cases

  • Pulling out only the nodes of a specific type from a larger, mixed JSON-LD document.
  • Forcing a predictable, consistent output shape for downstream code that expects fixed field order.
  • Filtering a document down to only the properties a frame explicitly asks for.
  • Re-nesting a flattened document back into an embedded structure for display purposes.

FAQs

What does a JSON-LD frame do?

A frame is a JSON-LD document (or document with a @context) that describes the shape you want the output in — which node type or properties must be present, and what order/nesting to arrange matching nodes. Framing matches your input document against the frame's pattern and rebuilds a document in that shape, filling in only the branches that matched.

Why did framing return an empty result / just the context?

Framing only includes nodes that match every constraint in your frame — if you require a specific @type, a specific property to exist, or a specific value, only nodes satisfying all of it are used, and everything else is dropped silently. If you get back an empty (or nearly empty) result, double-check that the property names and values in your frame actually match what's in your document — for instance, a frame requiring "@type": "http://schema.org/Person" won't match anything unless your document actually sets that type on a node.

Does this tool support remote @context URLs (like https://schema.org/)?

No — this tool intentionally disables network fetches for @context and document dereferencing, since a static, client-side tool can't reliably rely on a remote server's CORS policy or availability. Use a document and frame with an inline @context object (a JSON object, not a URL string) — the sample above works this way. If either your document or your frame has a @context that's a URL, you'll get a clear error instead of an unpredictable network failure.

Is my document uploaded anywhere?

No — all JSON-LD processing happens entirely client-side in your browser using the jsonld.js library. Nothing you paste is sent to a server.