What error squiggles are and why you want them on

Error squiggles are the red, yellow, and blue wavy lines that appear under code in VS Code when something is wrong. They show you problems in real time — typos, missing brackets, undefined variables — without waiting for you to run the code or save the file. Most of the time they are already on, but if your code looks clean and you know there are mistakes, or if you switched to a new language, you may need to turn them on yourself.

The squiggles come from a feature called IntelliSense, which watches your code as you type and compares it against the rules of the language you are using. When IntelliSense spots a problem, it marks the spot with a colored line so you can fix it before you move on. This saves time because you catch errors early instead of discovering them later when the code runs.

Key Takeaways

  • Error squiggles are turned on by default in VS Code, but you may need to enable them for specific languages or after changing settings.
  • Go to File > Preferences > Settings and search for "problems" to check whether the Problems panel is visible and active.
  • If squiggles are missing for a specific language, install the language extension from the VS Code Extensions marketplace.
  • You can control how strict the squiggles are by adjusting the validation level in your settings for each language.

Check if the Problems panel is open

The easiest reason squiggles are not showing is that the Problems panel is hidden. This panel sits at the bottom of VS Code and lists every error, warning, and note in your current file. If you do not see it, open it by pressing Ctrl + Shift + M on Windows or Linux, or Cmd + Shift + M on Mac.

You can also open it from the menu: click View at the top, then select Problems. Once the panel is open, you should see a list of issues, and the squiggles should appear in your code. If the panel opens but is empty, and you know there are errors, move to the next section.

Enable IntelliSense for your language

Different programming languages need different tools to understand the code. VS Code comes with built-in support for JavaScript and TypeScript, but other languages like Python, C++, Java, and Go need an extension. If you are working in a language and see no squiggles, the language extension is probably not installed.

Open the Extensions panel by pressing Ctrl + Shift + X on Windows or Linux, or Cmd + Shift + X on Mac. Search for your language by name — for example, "Python" or "C++". Click the top result (usually the one with the most downloads) and click Install. VS Code will read and set up the extension, and squiggles should appear within a few seconds.

For Python, the official extension is called Python and is made by Microsoft. For C++, search for C/C++ by Microsoft. For Java, search for Extension Pack for Java. These are the most widely used and most reliable.

Turn on validation in your settings

Some languages let you control how strict the error checking is. If squiggles are on but very sparse, or if you want them to be stricter, you can adjust the validation level. Open Settings by pressing Ctrl + , on Windows or Linux, or Cmd + , on Mac.

Search for the name of your language followed by "validate" — for example, "python validate" or "javascript validate". You should see an option that says something like "[Language] > Linting: Enabled" or "[Language] > Validation: Enabled". Make sure the checkbox next to it is checked. If there is a dropdown menu, select the strictest option available, usually called "error" or "strict".

For some languages like JavaScript, you may also see an option for a linter — a tool that checks code style in addition to errors. Popular linters are ESLint and Prettier. If you have one installed, make sure it is enabled in your settings.

Install a linter for stricter checking

A linter is a tool that goes beyond basic error checking and flags style problems, unused variables, and code that could be clearer. VS Code can use a linter to show more detailed squiggles. The most common linter for JavaScript and TypeScript is ESLint. For Python, it is Pylint or Flake8.

To use a linter, you first install it in your project using the command line. For ESLint in a JavaScript project, open the terminal in VS Code (press Ctrl + ` on Windows or Linux, or Cmd + ` on Mac) and type npm install eslint --save-dev. For Python, type pip install pylint. Then install the linter extension in VS Code — search for "ESLint" or "Pylint" in the Extensions panel and click Install.

Once the extension is installed, VS Code will run the linter automatically and show squiggles for any issues it finds. You can configure how strict the linter is by creating a configuration file in your project folder (for example, .eslintrc.json for ESLint), but the default settings work well for most people.

Restart VS Code if squiggles still do not appear

Sometimes VS Code needs to restart to fully set up an extension or explore a settings change. If you have installed a language extension or changed your validation settings and still see no squiggles, close VS Code completely and open it again. This forces VS Code to reload all extensions and settings.

If squiggles still do not appear after restarting, check that you are working in a file with the correct file extension. VS Code identifies the language by the file ending — a file named script.js is treated as JavaScript, but a file named script.txt is treated as plain text and will not show language-specific squiggles. If the file extension is wrong, rename the file or use the language selector at the bottom right of the editor to tell VS Code which language to use.

Frequently Asked Questions

Why do I see squiggles but my code runs fine?

Squiggles often flag style issues, unused variables, or potential bugs that do not stop the code from running. Some squiggles are warnings, not errors. You can ignore them if your code works, but fixing them usually makes your code clearer and less likely to break later.

Can I turn off squiggles for a specific file or folder?

Yes. Open Settings, search for "[language] validate", and uncheck the box. You can also disable a linter by uninstalling its extension. If you want to disable squiggles only in one folder, create a .vscode folder in that folder, add a settings.json file inside it, and set the validation option to false there.

What if I see squiggles but do not understand what they mean?

Hover your mouse over the squiggle and a tooltip will appear explaining the error. If the explanation is unclear, click the lightbulb icon that appears next to the error — it often shows a fix you can explore with one click.

Do I need a linter, or are the built-in squiggles enough?

Built-in squiggles catch real errors and are enough for learning. A linter is useful once you are writing code with others or working on a larger project, because it enforces consistent style and catches subtle bugs. Start with the built-in squiggles and add a linter later if you need it.