Tooling & IDE Support
|
This content was generated with the assistance of AI and should be verified against the official documentation before being relied on in production. The reference material consulted while preparing these pages is listed in the section bibliography. |
This page was checked on 2026-10-08 against Thymeleaf 3.1.5.RELEASE (2026-04-21), Spring Boot 4.1.1 and Java 21. Tooling is editor and build support rather than runtime behaviour, so everything here applies equally to Thymeleaf standalone, with Spring MVC and with Spring WebFlux. Editor plugins change much faster than the engine, and several of the ones below are maintained by individuals, so each tool in the table is listed with the date of its latest release as shown on its official marketplace page. A template never needs any of these tools to run; they only make writing it quicker and safer.
The tools at a glance
| Tool | Where it lives | What it gives you | Status |
|---|---|---|---|
Thymeleaf plugin for IntelliJ IDEA |
Bundled with the IDE (JetBrains Marketplace) |
Syntax highlighting, completion for expressions and |
Maintained by JetBrains. Basic highlighting without the Ultimate subscription, per the IntelliJ IDEA help |
Thymeleaf snippet extensions for VS Code (for example |
Visual Studio Marketplace |
Snippets for common |
Community, no official extension. Latest release of this one is June 2023 |
Thymeleaf Navigation for VS Code ( |
Visual Studio Marketplace |
Jump to the target of a fragment reference |
Community. Latest release January 2024 |
Thymeleaf Plugin for Eclipse |
Eclipse Marketplace and the Thymeleaf ecosystem page |
Content assist for Standard Dialect attributes and expression utility objects |
Legacy, in maintenance mode according to its README |
HTMX Support for IntelliJ IDEA |
Completion of |
Community. Version 0.0.10, June 2024 |
|
Alpine.js Support for IntelliJ IDEA |
Completion of Alpine directives such as |
Community. Version 0.7.2, August 2026 |
|
htmx and Alpine.js extensions for VS Code (for example |
Visual Studio Marketplace |
Attribute completion for |
Community. The two named here were last updated in November 2023 and March 2020 |
|
GitHub, Homebrew, Chocolatey, JBang |
Generates a Spring Boot project with Thymeleaf (or JTE), live reload and optional web dependencies |
Community project, release 1.13.0 (2026-10-05) |
None of the community entries is endorsed by the Thymeleaf project. Names and dates come from the marketplace listings read on the date above; check the listing again before relying on one, because a plugin that was current when this page was written may have been replaced or abandoned.
IntelliJ IDEA
IntelliJ IDEA documents Thymeleaf support in its own help, at https://www.jetbrains.com/help/idea/thymeleaf.html. The support comes from the Thymeleaf plugin that is bundled with the IDE: make sure it is enabled in the plugin settings, and create the project with Spring Initializr and the Thymeleaf dependency, or add the Thymeleaf dependency to an existing Maven or Gradle build. According to that page the features are:
-
code completion for expressions and
th:*attributes -
navigation from a template reference to the getter, message in a
.propertiesfile or other target, and to type declarations -
the rename refactoring for referenced properties, getters, iteration and status variables
-
inspections for unresolved references and errors in expression syntax, and intention actions such as creating a missing message property
-
preview of the static part of a template (the prototype) in a browser, which relies on the template being a natural template
The inspections that matter in daily work are Unresolved references in Thymeleaf expression variables and Unresolved message
resource keys, both described in Inspectopedia. The first can be silenced for one spot with a //noinspection ThymeleafVariablesResolveInspection marker.
Source: IntelliJ IDEA Help — Thymeleaf
The @thymesVar hint
IDE completion works from types, and a template does not know the type of the model attributes a controller put in. When the IDE
cannot find the controller (a fragment included from several controllers, a template rendered through a generic view, an
attribute added by a @ControllerAdvice) the variable is reported as unresolved. IntelliJ IDEA lets the author declare the type in
a comment inside the template. JetBrains does not describe the syntax in its help pages; it appears in issues on the JetBrains
tracker, for example IDEA-238974, written as a Thymeleaf parser-level comment block:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<body>
<!--/*@thymesVar id="book" type="com.example.bookshelf.Book"*/-->
<h1 th:text="${book.title}">Title</h1>
<p th:text="${book.author}">Author</p>
</body>
</html>
The id is the variable name used in ${...} expressions and the type is the fully qualified class name; generic types are
written in full, as in java.util.List<com.example.bookshelf.Book>. The comment form is deliberate: the characters <!--/* and
*/--> make it a parser-level comment block, which the Thymeleaf parser removes before processing, so it never reaches the
browser. Rendering the template above in the Bookshelf scratch application (Spring Boot 4.1.1, Thymeleaf 3.1.5) with a Book whose
title is "Dune" and whose author is "Frank Herbert" gave this output, with no trace of the hint:
<!DOCTYPE html>
<html>
<body>
<h1>Dune</h1>
<p>Frank Herbert</p>
</body>
</html>
Two pitfalls follow from this. The hint is only an IDE convention, so Thymeleaf neither checks nor needs it, and a stale type
silently misleads the completion; keep it next to the code it describes and update it when the model class is renamed. And the
xmlns:th namespace on the <html> element is, in the same spirit, an IDE and validator hint only: Thymeleaf itself processes
th:* attributes without it.
VS Code
There is no official Thymeleaf extension for Visual Studio Code, and no Thymeleaf language server maintained by the Thymeleaf project. The Visual Studio Marketplace holds community extensions, which cluster in three groups:
-
snippets for common attributes, such as
juhahinkula.thymeleaf("Thymeleaf snippets") andLalithK90.thymeleaf-html5-snippets -
navigation, such as
sgruendel.thymeleaf-navigate, which follows fragment references -
helpers that suggest model fields in Thymeleaf HTML
These add typing speed and some navigation, not the type-aware completion and inspections of IntelliJ IDEA. The rest of a Spring Boot
project is better served: the Spring Boot Tools extension from VMware (vmware.vscode-spring-boot) provides validation and content
assist for application.properties, which covers the spring.thymeleaf.* keys described in
Spring Boot auto-configuration and properties, and Spring
Initializr support (vscjava.vscode-spring-initializr) creates the project.
The legacy Eclipse plugin
The Thymeleaf project’s own ecosystem page lists the Thymeleaf Eclipse Plugin, which adds content assist for the Thymeleaf
attribute processors, with an explanation of each attribute, and content assist inside expressions for the expression utility
objects. It is published on the Eclipse Marketplace as "Thymeleaf Plugin for Eclipse", with the source in the
thymeleaf-extras-eclipse-plugin repository and an update site that is given in its README.
Its README states the limits plainly: it needs Java 17 and an Eclipse IDE from 2023-06 or newer, it works in the Eclipse Web Tools Platform HTML editor (which newer Eclipse and Spring Tool Suite installations may no longer open by default), and it is in maintenance mode because the Thymeleaf team no longer uses Eclipse day to day. It is also driven by dialect metadata files shipped in the dialect jars, so a custom dialect gets completion only if its author supplies them. The repository’s last push is from October 2023. Treat it as a convenience for Eclipse users with a Thymeleaf 3 project, and expect IntelliJ IDEA to give more.
Source: Thymeleaf — Ecosystem
htmx and Alpine.js in the editor
Pages that use htmx and Alpine.js are still HTML, so editors complete the hx-* and x-* attributes only through plugins, and
Thymeleaf has no part in the completion: you write the htmx attribute literally and let Thymeleaf compute its value, as shown in htmx fundamentals and
Alpine.js and web components. In IntelliJ IDEA the marketplace lists HTMX
Support, which completes attributes such as hx-get, and Alpine.js Support, which completes directives such as x-data (its
description also mentions setting the language to JavaScript inside directives). For VS Code, several community extensions such as
otovo-oss.htmx-tags and adrianwilczynski.alpine-js-intellisense offer attribute completion; the htmx extension named here
was last updated in November 2023, and danicc097.htmx-v2-tags describes itself as a fork that provides htmx 2 tag completion. A commercial plugin named HTMX Pro also exists for JetBrains IDEs
and is not covered here.
Because these plugins are written by individuals and complete attribute names from a snapshot of the library, a newly added htmx attribute may be missing from the list while still working in the browser. The htmx documentation at https://htmx.org/ remains the reference, and the dated htmx baseline of this guide is htmx 2.0.x.
Source: htmx — documentation
Generating a project with ttcli
ttcli ("Taming Thymeleaf CLI") is a command line tool by Wim Deblauwe that sets up a Spring Boot project with Thymeleaf (or JTE)
and a live-reload setup. It is a community tool, not part of the Thymeleaf project; the plain Spring Boot way to create a project is
Spring Initializr with the Thymeleaf dependency, which the other pages of this guide assume. According to
its README it is installed from a release archive, with Homebrew (brew install wimdeblauwe/homebrew-ttcli/ttcli), with Chocolatey
(choco install ttcli), or run through JBang:
./ttcli help
./ttcli init
Source: ttcli README
help lists the options and init runs the interactive generator. The README lists these questions: Maven groupId and
artifactId, project name, Spring Boot version, template engine (Thymeleaf by default, or JTE), live reload setup and web
dependencies. It then creates the project in a sub-directory named after the artifactId, adds the npm scripts for live reload,
starter templates (index.html and layout/main.html under src/main/resources/templates for Thymeleaf), webjars dependencies,
optional Tailwind CSS or Bootstrap setup, and an application-local.properties with template caching disabled. The live reload
choices are Spring Boot DevTools (simplest and slowest, no npm needed), npm-based scripts, or Vite. The README says to read the
generated HELP.md for the instructions that match the choice made. The --baseDir option picks a different base directory.
Whatever ttcli generates, check the versions it picks: the project was written for the setups of its time, and the Tailwind configuration style in particular changed with Tailwind v4. The caching switch it writes is the same property explained in Spring Boot auto-configuration and properties, and the live-reload alternatives built into Spring Boot are in the Spring Boot DevTools documentation.
Javadocs
The API documentation of the 3.1.5.RELEASE artifacts is published on the Thymeleaf site, one set per module:
-
thymeleaf, the engine, the Standard Dialect and the processor API
-
thymeleaf-spring6, the Spring MVC and WebFlux integration and the SpringStandard Dialect
-
thymeleaf-extras-springsecurity6, the
sec:*dialect
When a class name appears in a page of this guide, this is where to verify it; the version in the URL must match the version your
Boot BOM manages. There is no thymeleaf-spring7 artifact on Maven Central at the time of writing; Spring Framework 7 applications
use thymeleaf-spring6.
Source: Thymeleaf — Documentation
The official example applications
The Thymeleaf repository on GitHub is a monorepo, and its 3.1-master branch has an examples directory, with a README that says the
applications can be built individually or all together with Maven. The directory is split by integration, with the core examples
(the Good Thymes Virtual Grocery in a javax and a jakarta version), the Spring 5 and Spring 6 examples (Spring Thyme Seed Starter
Manager, the extraThyme dialect, say-hello, Spring mail, Thymeleaf versus JSP), Spring Boot 2 and 3 examples (big list and
server-sent events on WebFlux, features on MVC, the seed starter manager for MVC and WebFlux), and the Spring Security examples.
The tutorials point to the Good Thymes Virtual Grocery, the seed starter manager and extraThyme among them. They target Spring 6 and Boot 3, so they show the 3.1 API but not Boot 4
packaging; check the dependency versions before copying a build file. The earlier standalone thymeleafexamples-* repositories are
archived.
Source: thymeleaf/thymeleaf — examples
Where to find more IDE links
A separate issue, number 116, covers IDE links for the documentation site as a whole; until it lands, the sources on this page are the ones to consult.