Let’s look at some extensions for VS Code that make writing and editing HTML (and languages that are basically HTML with extra powers) better. You may not like all of them. Maybe some of them don’t appeal to you, solve a problem you don’t have, or feel like more clutter than you need. That’s OK. These are just a handful that I’ve tried and liked to some degree.
I’d start with Emmet here, even thought it’s not technically an extension1 for VS Code. It’s built right in. You should know about it though because it’s very useful. It does “HTML Expansions” like this, which I use pretty much every day of my life:
HTML End Tag Labels
I heard about this one from Stefan Judis who blogged about it the other day and inspired this post idea.
The whole idea is that rather than you leaving comments in your HTML to indicate what HTML element it is closing (a somewhat common practice, especially for partials that close elements that might not be opened in the same document).
<div class="main">
</div> <!-- / div.main -->
<?php /* / div.main */ ?>
<?php /* Sometimes I'd do it in a server side language so it didn't go over the wire. */ ?>
This extension shows you UI about what HTML is being closed:

Auto Close Tag
As soon as you type the >
in an HTML element, like the last bracket in <div>
, the closing tag is automatically created for you.
It can be configured to only auto close after you’ve typed the </
to indicate you’re about to close a tag, which is a default in Sublime Text 3. Speaking of which, if you install the Sublime Text Keymap, you’d get that automatically, plus a handful of other fancy key commands.
There is also Close HTML/XML tag, but it only works via key command. With Auto Close Tag you can configure it either way, and it has far more installs for whatever reason.
Highlight Matching Tag
Here’s the GIF from their docs:

I was going to do my own video, but I discovered that even if I have this extension off, something else in my VS Code is highlighting matching tags anyway. I’m not entirely sure what it is, which leads me to believe it might be a built-in feature now.

Not specific to HTML, but if like this sort of help with matching things, you might give Bracket Pair Colorizer 2 a try, which can be quite nice for CSS and JavaScript.
Auto Rename Tag
I find this one quite useful!
I believe this functionality is actually built into the canonical Emmet, but again, VS Code doesn’t use canonical Emmet so this feature isn’t there, hence the need for this extra plugin.
Better Comments
I leave code comments fairly liberally, especially when dev’ing out new things. A convention I like is when a comment is prefixed (e.g. TODO) that it is extra important and needs attention. Better Comments allows those to look visually different.

Code Spell Checker
There is no spell-checking in VS code. I don’t love that. To me this plugin is a must-have, especially for HTML, because HTML typically has content in it, like words, that should be spelled correctly. And just like a linter, this plugin gives you squiggles when something is wrong and a menu to attempt to fix it.

Indent Rainbow
Bask in this glorious rainbow created by deepening indents:

The point is that it gives you some visual cues to what level you’re currently looking/working at. In that sense it’s kinda like the Highlight Matching Tag, but I like them both honestly. It’s most useful when you need to scroll up or down to find where the matching tag is.
Prettier
Prettier does work on HTML, but I’d almost call it a smidge controversial. For example, it breaks HTML attributes onto single lines which feels a lot like a JSX thing but less common to see in raw HTML. But sometimes there are literal side effects. Like if you type <ul><li></li><li></li></ul>
on purpose like that (no whitespace) because you’re going to set all the list items inline
, Prettier will break them onto their own lines, inserting whitespace, and changing the layout of what you intend. You can always fix it with a comment for Prettier to leave it alone (e.g. {/* prettier-ignore */}
), but I could see it rubbing people the wrong way. There are even settings for it under HTML Whitespace Sensitivity, but it could never be perfect.
I actually got Prettier for HTML working just for this blog post so I think I’ll keep it for a while and see if I like it. I already know I like Prettier for JSX. I’m generally for as much autoformatting as possible.
Snippet
I gotta imagine there are lots of snippet plugins, but this is the only one I’ve tried and it works fine. I like how you make snippets right from existing files.
Tabnine
I heard about this one from Kyle Simpson who I think was doing some paid consulting with them or something. The point of it is that it does fancy AI-powered autocomplete suggestions, even in HTML. Check out it guessing at some attributes:
This looks like a pretty commercial product with features that push you toward paid plans for teams. I don’t really feel like getting all into that; it was just interesting to see a tool like this work with HTML.
axe Accessibility Linter
This lints your HTML for accessibility problems right in the editor. There are a bunch of rules it checks for.
- Did you know even though VS Code has Emmet baked right in, there is no communication between Emmet’s creator and the VS Code team? I’ve tried to facilitate that connection in the past, but failed. Point being: Emmet in VS Code would probably be better if it wasn’t just jacked in but integrated from the official packages. Emmet has new things that VS Code could use, like expansion previews. ⮑
Useful list. The auto rename tag shows use for matching HTML elements, but I think this is a native function (F2).
You’re absolutely right, it’s a native function, but the extension has the convenience of change-as-you-type for non-.html files. The native function exists as the settings.json entry
"editor.linkedEditing": true
but this seems to (frustratingly) only work for HTML files, not other extensions that utilise HTML (jsx, php, etc).To edit matching edit HTML tags natively, set the setting
Love this list. Definitely need to get at least a few of these! Thanks for sharing!
I use VSCode all the time, and I’ve already got most of these installed and I love them when I’m coding. But I do have a question for you, if you don’t mind. Is it actually possible to get VSC to also accept JavaScript? Whenever i include JS in my code, and i use the preview to the side feature, it says that certain parts of the code are not being shown, or something to that effect. I realize that this is a CSS site, but i don’t know anywhere else i can ask this question. I’ve even tried on Reddit.
Amazing information
Which font you guys use for comments in the code snippets??
We use one called Operator Mono. You can find more about it — and others! — on our site dedicated just to coding fonts: https://coding-fonts.css-tricks.com/fonts/operator-mono/
Literally almost all of these were very useful thank you!
Very useful overview! Installed 3 of them right away. Really appreciated.
What’s your vscode theme?
What theme do you use?
Which theme do you use in VS CODE?
Tag highlighting is built in, but it’s hard to see in some themes. GitHub theme looks like yours.
For snippets I recommend this extension, it has everything: https://marketplace.visualstudio.com/items?itemName=tahabasri.snippets
Can anyone writes the names of all extensions for html and html5