Open-source project
NPP-JSONViewer/JSON-Viewer avatar
NPP-JSONViewer/JSON-Viewer

JSON-Viewer puts a JSON tree view inside Notepad++

A JSON viewer plugin for Notepad++. Displays the selected JSON string in a tree view.

889 stars172 forksC++MIT

At a glance

What is it?
The NPP-JSONViewer plugin renders a selected JSON fragment as a tree inside Notepad++, and it does more than display it, because the tree and the editor stay in step, so selecting a node jumps to the matching text and double clicking a node selects the key. It is a C++ plugin built on RapidJSON, released under MIT, with a settings dialog for formatting and relaxed parsing options.
Who is it for?
Adopt JSON-Viewer if you edit JSON in Notepad++ and want a tree view that stays in step with the editor, plus formatting and validation in the place you already work. Do not adopt it if you need a standalone viewer, a JSON schema aware tool or a large file workflow, because the tree view is a panel inside a text editor and the release notes describe no support for multi selection.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 4 days ago.
What is it written in?
Mainly C++, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

A tree view that reads the selection, not the file

JSON-Viewer is a plugin for Notepad++ that displays the selected JSON string in a tree view. The README describes it as designed to display JSON strings in a Treeview format and to highlight the error position if any parsing issues occur, and it calls itself a simple and efficient tool.

The word selected is doing the work. The plugin does not try to interpret a whole document as a data model the way a dedicated JSON editor would. You select a fragment, and the plugin parses that fragment and shows it as a tree. The error position highlight is the other half of that contract, because a JSON document is usually a fragment of a larger file, such as one object inside an API response, and a parser that reports where it gave up is more useful than one that refuses to start.

The audience is therefore somebody who works with JSON inside text files, which is most people who work with JSON at all. Configuration files, API responses pasted into a scratch buffer, a log line that happens to contain an object. For that person, having a tree view in the same window as the text, with the two connected, removes a round trip to a separate tool.

The project is a C++ plugin, MIT licensed, with the recent releases v2.2.0.0 on 2026-05-30, v2.1.1.0 on 2025-02-23 and v2.1.0.0 on 2024-10-26. The last push to the repository was on 2026-10-19, and the repository is not archived. The release badge at the top of the README points at a differently named repository, kapilratnani/JSON-Viewer, which is the upstream the fork tracks.

Installation is a DLL, a folder and a restart

The instructions are five steps, and the first one is the whole installation.

bash
1. Copy the file `NPPJSONViewer.dll` to the `plugins\NPPJSONViewer` folder in the Notepad++ installation directory..
2. Restart Notepad++ and ensure the plugin appears under the Plugins menu.
3. Open a document containing a JSON string (or paste in some JSON text).
4. Select the JSON fragment and go to <b>Plugins > JSON Viewer > Show JSON Viewer</b> or press  or press <kbd>Ctrl</kbd>+<kbd>Alt</kbd>+<kbd>Shift</kbd>+<kbd>J</kbd>.
5. Voila, that's it! If the JSON is valid, it will be displayed in a Treeview format.

So there is no installer and no package manager entry, which is the normal arrangement for a Notepad++ plugin. You obtain the built DLL, drop it into a directory under the Notepad++ installation, restart the editor and the plugin appears in the Plugins menu.

The keyboard shortcut is worth noting, because it is the difference between a tool you use and a tool you admire. Ctrl+Alt+Shift+J opens the viewer for the current selection, and step 4 also says you can reach it from the menu.

Step 3 is the part with a subtlety for anyone who reads quickly. You open a document containing JSON, or paste JSON text in, and then you select the fragment you want to see. The plugin works on a selection, and in the older versions of the plugin, when nothing was selected, it would select all the text for you, which is listed in the 1.23 release notes as the change to select all text when no selection is made.

Selecting a node moves the cursor, which is the feature that matters

The 2.1.0.0 release added the two features that turn the tree into a working surface rather than a read only picture.

The first is navigating directly to the JSON node in the editor upon node selection, using the left mouse click or the arrow keys. The second is selecting the JSON key in the editor when double clicking on a node. So the tree and the text are two views of the same thing, and you can move between them in either direction.

That is the feature that distinguishes this plugin from a generic tree viewer, and it is worth asking why it took a while to arrive. The 2.0.1.0 release notes describe a redeveloped user interface, with a redesigned JSON view panel that is button like, with refresh, validate and format actions, using a well performed class instead of a plain function, and with the current selected node path given on the bottom of the JSON view window. So the panel became a proper component with a status area, and the feature that makes it useful came in the release after that.

Other capabilities from the same era are worth listing, because they show the shape of the tool. You can copy a node, copy a value and copy a path, and you can expand or collapse everything. There is search in the JSON tree window from 2.0.3.0, zoom of the tree view with ctrl and the mouse wheel or a slider from 2.1.1.0, and sorting ascending by key from 2.0.8.0. A JSON file that is opened directly or by tab switching is auto formatted from 2.0.2.0, and the tree follows the current tab if it is a JSON file.

The element count for lists and arrays was added in 2.0.4.0, and 2.0.3.0 added proper handling of NaN, Inf and the infinity literals, plus support for arrays that have no key.

RapidJSON underneath, and a parser that is deliberately lenient

The parser is RapidJSON, and the release history records when it arrived. Version 1.30a says the project is now using rapidjson, and both 2.1.0.0 and 2.1.1.0 list an update to the latest RapidJSON parser.

The interesting part is the flags. The 2.2.0.0 release notes describe fixing parser behaviour to preserve numeric values as strings when required, by using RapidJSON's kParseNumbersAsStringsFlag, and fixing the handling of JSON raw number values during formatting and serialization. That is a narrow change, and it tells you the plugin is not simply delegating to a stock parse, it is choosing how numbers are represented.

The leniency is configurable and documented. Version 1.40 lists relaxed parsing that supports trailing commas, comments for parsing only, and the NaN and infinity JavaScript literals, and 2.0.2.0 makes the parsing configurable, for example ignoring a trailing comma or ignoring comments, alongside settings for indentation, line ending and line format.

This is the right behaviour for a tool whose job is to help you edit JSON, and it is the wrong behaviour for a validator. A document with a trailing comma is invalid JSON, and a plugin that parses it without complaint is telling you it is convenient, not that it is correct. The setting dialog lets you turn the leniency off, which is the part to know about.

The 2.0.6.0 release also made replacing the value undefined with null configurable, and 2.0.7.0 removed quotes from the key in the tree view and fixed a copy operation that did not always return the complete text.

Visual Studio 2026, .slnx and shared components as submodules

The 2.2.0.0 release is mostly a build infrastructure release, and the details are the most useful thing in the whole changelog for anyone trying to build the plugin.

The project and build infrastructure were upgraded to Visual Studio 2026, the solution management was migrated to the .slnx format, and shared components were migrated from external copies to Git submodules for improved maintainability. Project dependencies and submodules were updated, including Google Test, and the code quality work included refactoring, formatting and minor performance optimisations. The GitHub Actions workflows and the CI/CD dependencies were modernised.

The repository layout matches that description. There is a .gitmodules file at the root, an external/ directory for the external code, src/ for the plugin itself, tests/ for the test suite, and a .clang-format file, so the C++ style is enforced by a tool.

The testing story is worth a note. The 2.2.0.0 release added extensive unit tests for the JSON sorting functionality, additional parser and regression test coverage, and expanded overall automated test coverage to improve reliability, and it added the use of Google Test as the framework. The 2.1.1.0 and 2.1.0.0 releases each list added unit tests as well, and the 2.0.8.0 and earlier releases do not, so the testing effort is recent and the project is a couple of years old in its current form.

The CI badges tell the same story from the outside. There is a CI build badge and a code scanning badge, the latter pointing at a codeql workflow, so static analysis runs on the code alongside the build.

The limits, and who should not use it

There are three boundaries that the release notes make clear.

The first is selection. The 2.0.8.0 release notes include an explicit callout for no support on multi selection, which means the plugin parses and displays one selected fragment at a time. A document with an array of hundreds of records is therefore a document you work on one object at a time, and that is a real limitation for the exact task people most want a JSON viewer for.

The second is the platform and the host. This is a Notepad++ plugin, a Windows editor, built as a DLL for a specific editor API. It is not a standalone viewer, it is not a library, and it is not a schema aware tool, because nothing in the release history mentions JSON schema validation, and the tree view shows structure and types rather than a contract.

The third is the licence of the surrounding ecosystem rather than of the plugin. The plugin is MIT, and the copies of Notepad++ it is built against are a separate matter, but the plugin only works inside that editor and inherits its release cycle. Version 1.41 records that Windows XP support was dropped because Notepad++ no longer supported it, which is a neat illustration of the dependency in one line.

So the sensible adoption rule is narrow. If you work with JSON fragments in Notepad++ and want to see the structure without leaving the editor, the plugin earns its place, and the round trip between tree and text is the reason. If you want to explore a large JSON file, validate it against a schema, or query it, you need a tool built for that, and this one is not it.

Editorial conclusion

Adopt JSON-Viewer if you edit JSON in Notepad++ and want a tree view that stays in step with the editor, plus formatting and validation in the place you already work. Do not adopt it if you need a standalone viewer, a JSON schema aware tool or a large file workflow, because the tree view is a panel inside a text editor and the release notes describe no support for multi selection. Before you install, check the plugin folder name for your Notepad++ version, since the instructions name a plugins\NPPJSONViewer path, and read the settings dialog options, because the parser is deliberately lenient with trailing commas, comments, NaN and infinity, which is convenient while editing and wrong for validation work.

Frequently asked questions

How do I install the JSON-Viewer plugin for Notepad++?

Copy the NPPJSONViewer.dll file into the plugins\NPPJSONViewer folder in the Notepad++ installation directory, restart Notepad++, then open a document with JSON, select the fragment and use Plugins > JSON Viewer > Show JSON Viewer or the Ctrl+Alt+Shift+J shortcut.

What parser does JSON-Viewer use for Notepad++?

RapidJSON, adopted in version 1.30a and updated in later releases. Version 2.2.0.0 also uses RapidJSON's kParseNumbersAsStringsFlag to preserve numeric values as strings when required.

Can JSON-Viewer handle JSON with trailing commas or comments?

Yes, and that is configurable. Version 1.40 added relaxed parsing that supports trailing commas, comments for parsing only, and the NaN and infinity JavaScript literals, and version 2.0.2.0 added settings to control parsing options along with indentation, line ending and line format.

What can I do from the JSON tree view in Notepad++?

Since version 2.1.0.0 you can navigate directly to the JSON node in the editor when you select a node, and double clicking a node selects the JSON key in the editor. The panel also offers copy node, copy value and copy path, expand and collapse all, search from 2.0.3.0, zoom from 2.1.1.0 and sorting by key from 2.0.8.0.

What are the limitations of the Notepad++ JSON-Viewer plugin?

The 2.0.8.0 release notes carry an explicit callout for no support on multi selection, so one selected fragment is parsed at a time. The plugin is also tied to the Notepad++ plugin API and to Windows, and it offers no schema validation.

Official sources

  1. Issues
  2. License: MIT
  3. NPP-JSONViewer/JSON-Viewer on GitHub
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/npp-jsonviewer-json-viewer.svg)](https://hysenlabs.com/projects/npp-jsonviewer-json-viewer)

Was this useful?