Editor Support Survey
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.
| Editor | Dedicated JSON6 support | Best workaround |
|---|---|---|
| VS Code | None found (Marketplace and Open VSX searches for "json6") | Associate *.json6 with JavaScript |
| JetBrains IDEs | None found in the Marketplace search | Register *.json6 under the JavaScript file type |
| Vim and Neovim | None found (a GitHub repository search returned no matches) | autocmd to the javascript filetype |
| Emacs | None found | auto-mode-alist entry for js-mode |
| Sublime Text | None found | Set the syntax to JavaScript for the extension |
| GitHub | No .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 aforbidTemplateSubstitutionoption to reject it). - A leading-zero decimal such as
0123is 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
.json6files 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=JavaScriptThe 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.