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

Table 1. Tools verified on their official pages (2026-10-08)
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 th:* attributes, navigation, rename, inspections, quick fixes

Maintained by JetBrains. Basic highlighting without the Ultimate subscription, per the IntelliJ IDEA help

Thymeleaf snippet extensions for VS Code (for example juhahinkula.thymeleaf)

Visual Studio Marketplace

Snippets for common th:* attributes

Community, no official extension. Latest release of this one is June 2023

Thymeleaf Navigation for VS Code (sgruendel.thymeleaf-navigate)

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

JetBrains Marketplace

Completion of hx-* attributes such as hx-get

Community. Version 0.0.10, June 2024

Alpine.js Support for IntelliJ IDEA

JetBrains Marketplace

Completion of Alpine directives such as x-data

Community. Version 0.7.2, August 2026

htmx and Alpine.js extensions for VS Code (for example otovo-oss.htmx-tags, adrianwilczynski.alpine-js-intellisense)

Visual Studio Marketplace

Attribute completion for hx-* and x-*

Community. The two named here were last updated in November 2023 and March 2020

ttcli

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 .properties file 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.

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") and LalithK90.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.

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.

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:

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.

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.

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.