JSON Pointer Tester & Builder
Paste the document and a pointer such as /items/0/name. Use the segment builder when property names contain slashes or tildes.
Runs locally in your browser
Paste the document and a pointer such as /items/0/name. Use the segment builder when property names contain slashes or tildes.
Runs locally in your browser
The tool resolves an RFC 6901 JSON Pointer against a JSON document and shows the value it selects, the decoded path tokens and the type of that value. A pointer is either the empty string, which selects the whole document, or a sequence of reference tokens separated by slashes: /users/0/name enters the users array, takes its first element and reads name there.
The segment builder works in the other direction. Type one segment per line and the tool joins them into an escaped pointer, so property names that contain a slash or a tilde come out as ~1 and ~0 instead of breaking the path. Everything runs inside the page, and Copy puts the resolved value on the clipboard.
A pointer is split on slash characters, and the leading slash only marks the start, so //empty addresses the property whose name is the empty string while /a~1b addresses the key a/b. The two escape sequences are ~1 for a slash and ~0 for a tilde; a tilde followed by anything else, including the end of the pointer, is rejected with an error instead of being read as a literal.
The field also accepts a URI fragment: #/users/0/name and the percent-encoded #%2Fusers%2F1%2Fname resolve to the same tokens, and #/a%20b reads the key a b. Whitespace around the pointer is trimmed before parsing, so a trailing space after /a is ignored.
Array positions follow RFC 6901 strictly: a token counts as an index only when it is 0 or a digit sequence without a leading zero. /arr/1 selects the second element, while /arr/01, /arr/- and an index past the end of the array are not found; the dash that marks the end of an array in JSON Patch is not a readable value here.
Objects are matched by exact own property name, so keys with spaces, Unicode letters or names such as __proto__ resolve like any other key — there is no wildcard and no search. Values are displayed by type: strings raw, numbers and booleans as JSON, null as null, objects and arrays pretty-printed, with Value type and Resolved in the metrics.
Build from segments escapes each line on its own, joins the segments with slashes and replaces ~ with ~0 before / with ~1, the order RFC 6901 requires. An empty list produces an empty pointer that selects the whole document; when the document pane is empty, Build only writes the pointer and reports that it was built from the segments, so no value is invented.
Both directions run in the browser: resolving, building, the example and Copy issue no network request, so the tool works offline and on data that must not leave the machine. Copy stays inert while there is no value on screen — after invalid JSON, a bad escape or a pointer that does not resolve, the previous value has been cleared and cannot be copied by mistake.