Editor Support Survey JSON6

An honest look at JSON6 editor support: what exists, what does not, and file-association workarounds that work today.

TL;DR: As of 10-27-2026 I could not find a dedicated JSON6 extension, plugin or syntax definition for VS Code, Open VSX, JetBrains, Vim, Emacs or Sublime Text. The practical answer is to associate .json6 files with a JavaScript mode, because JSON6 deliberately borrows ES6 syntax. A JSON5 mode is a weaker fit. Config for each editor is below.

The Survey

JSON6 is a small project: one reference implementation, d3x0r/JSON6, published on npm as json-6. A format that size rarely gets its own editor tooling. I searched for real support and report what I found, including the negative results. Absence in a search is not proof of absence, particularly where a marketplace renders results with JavaScript, so treat "none found" as a statement about my search, not a guarantee.

EditorDedicated JSON6 supportBest workaround
VS CodeNone found (Marketplace and Open VSX searches for "json6")Associate *.json6 with JavaScript
JetBrains IDEsNone found in the Marketplace searchRegister *.json6 under the JavaScript file type
Vim and NeovimNone found (a GitHub repository search returned no matches)autocmd to the javascript filetype
EmacsNone foundauto-mode-alist entry for js-mode
Sublime TextNone foundSet the syntax to JavaScript for the extension
GitHubNo .json6 association found.gitattributes language override

For comparison, JSON5 does have dedicated tooling, for example the Open VSX registry lists a "better-json5" extension. None of it understands the JSON6 additions.

Why JavaScript Mode Is the Best Fit

JSON5 modes are designed around a fixed, small grammar. JSON6's additions, on the other hand, are mostly things JavaScript already has: back-tick strings, 0b and 0o literals, underscore separators, the undefined keyword, array holes like [1,,2] and \u{...} escapes. A JavaScript highlighter colors all of these correctly. A JSON or JSON5 mode is likely to flag or mis-color them.

The mismatches to expect in a JavaScript mode:

  • Inside a back-tick string, ${name} is highlighted as an interpolation, but JSON6 treats it as literal text (the parser has a forbidTemplateSubstitution option to reject it).
  • A leading-zero decimal such as 0123 is legal JSON6 and means 123, while JavaScript strict mode treats it as an error. A linter may complain.
  • A bare top-level object may be parsed as a block statement by a strict JavaScript checker. Turn off linting for .json6 files rather than trying to satisfy it.
  • No schema, completion or formatting beyond what the JavaScript mode offers. A JavaScript formatter will happily rewrite the file, which is not the same as normalizing JSON6.

VS Code

Add a file association to settings.json. This is built-in behavior and needs no extension:

{ "files.associations": { "*.json6": "javascript" } }

The built-in jsonc mode (JSON with comments) is the other option. It accepts comments and trailing commas, but it reports unquoted keys and single quotes as errors, so JavaScript is the better choice for real JSON6. If you want the red squiggles for JSON syntax anyway, the Marketplace and Open VSX hold JSON5 extensions you can pair with "*.json6": "json5", accepting that JSON6-only syntax will be flagged.

Validate by running the check from the CLI page in a VS Code task, since no language server understands the format.

IntelliJ, WebStorm and Other JetBrains IDEs

Open Settings, then Editor, then File Types, choose JavaScript, and add the pattern *.json6 under Registered Patterns. WebStorm and the other IDEs with JavaScript support will then highlight the file as JavaScript. Without the JavaScript plugin, associate the pattern with the bundled JSON5 file type instead and accept the extra warnings. I found no JetBrains Marketplace plugin for JSON6.

Vim and Neovim

Add one line to your vimrc (or init.vim). In Neovim with Lua you can use vim.filetype.add:

" Vim script autocmd BufRead,BufNewFile *.json6 setfiletype javascript -- Neovim Lua vim.filetype.add({ extension = { json6 = 'javascript' } })

Tree-sitter users get the JavaScript parser through the same filetype, with the template-substitution caveat above.

Emacs

(add-to-list 'auto-mode-alist '("\\.json6\\'" . js-mode))

Put that in your init file. js-mode ships with Emacs. If you use js2-mode or a tree-sitter variant, substitute it, but expect more parser complaints about array holes and leading-zero numbers.

Sublime Text

Open a .json6 file, then choose View, Syntax, Open all with current extension as, JavaScript. Sublime stores the association in a settings file so every .json6 file opens with the JavaScript syntax. No Package Control entry for JSON6 turned up in my search.

GitHub and Git Hosting

GitHub's language detection uses the Linguist library. I found no .json6 entry in the part of its language list that I read, so these files render as plain text. You can override the language per repository in .gitattributes:

*.json6 linguist-language=JavaScript

The override changes highlighting and language statistics for that repository only.

Verifying a File Without Editor Support

Since no editor can tell you whether a file is valid JSON6, rely on the parser itself. The online validator runs the reference parser in your browser and reports line and column. From a terminal, the -c option on the CLI fails with a position if the file is invalid. In code, load it with JSON6.parse or the Node require hook described in the Node.js guide. The package also ships TypeScript declarations, covered on the TypeScript page.

If you build an editor extension for JSON6, or find one I missed, tell us and this page will list it.

FAQ

Is there a VS Code extension for JSON6?

I did not find one. Associate *.json6 with the built-in JavaScript language for good highlighting.

Can I use a JSON5 extension?

It will recognize comments, unquoted keys and trailing commas, but it will flag back-ticks, binary and octal literals, underscores, undefined and array holes.

Why not just use .json5 as the file extension?

You can, if your tooling insists, but the file is not valid JSON5 once it uses JSON6 features, and other JSON5 parsers will reject it. The package documents .json6 as the extension.

Does JavaScript mode mean JSON6 is just JavaScript?

No. JSON6 is a data format with its own rules, such as no template substitution and no new data types. JavaScript mode is a highlighting convenience only.

Work With What Exists

Pick the workaround for your editor, then validate in the browser or with the CLI.