Finch · Htmler

Type-safe HTML, written in Dart.

Build entire web pages with composable $Tag() builders — clean syntax, IDE autocomplete, and seamless Jinja interop.

40+

HTML tags

100%

Type-safe

0

Dependencies

Composable

01 · Text

Typography elements

Headings, formatting, inline code, and accent text — all composed as Dart tags.

Heading hierarchy

H1 — Main title

H2 — Section

H3 — Subsection
H4 — Minor

Perfect semantics for SEO & accessibility.

Text formatting

Mix bold, italic, and underlined freely.

Inline code: htmler.render()

Small text adds footnote-level context.

Accents & badges

Use $Span for highlighted text or outlined badges.

Typography is the foundation of great design.

Pro tip: All these elements are pure Dart — instant type-safety and full IDE autocomplete.

02 · Collections

Lists & navigation

Ordered, unordered, and richly styled list items with badges and pills.

Unordered list

  • First item1
  • Second item2
  • Third itemNEW
  • Fourth item4

Ordered list

  1. Setup your environment
  2. Import Htmler library
  3. Compose your tags
  4. Render beautiful HTML
03 · Inputs

Interactive form elements

Inputs, selects, textareas, range sliders — every form widget you need.

User information

Preferences

Additional options

Pro tip: Required, pattern, and type attributes give you HTML5 validation for free.

04 · Data

Tables

Sortable, striped, responsive tables — straight from $Table builders.

Popular programming languages, 2024

Source: Stack Overflow Developer Survey

#LanguagePopularityPrimary useYear
1JavaScript
69.70%
Web development1995
2Python
51.80%
Data science, AI1991
3Dart
6.02%
Flutter, web apps2011
4Java
40.20%
Enterprise, Android1995
05 · Visual

Media & visual elements

Progress bars, collapsible details, and interactive widgets.

Skill levels

HTML90%
CSS85%
Dart95%

Disclosure widgets

What is Htmler?

Htmler lets you build entire HTML documents with composable Dart tag builders — no string templates, full type safety, perfect IDE support.

  • Semantic HTML by default
  • Accessibility-friendly
  • Zero runtime dependencies
Why type-safe HTML?

Catch typos at compile-time, refactor with confidence, and let your IDE autocomplete the entire HTML5 vocabulary.

06 · Snippets

Code examples

How to compose Htmler tags into reusable Dart UI.

htmler_controller.dart
// Creating a button with Htmler $Button(attrs: { 'type': 'submit', 'class': 'btn btn-primary', }, children: [ $Text('Click me!') ]) // Creating a card layout $Div(attrs: {'class': 'card'}, children: [ $Div(attrs: {'class': 'card-body'}, children: [ $H5(children: [$Text('Card title')]), $P(children: [$Text('Card content goes here…')]), ]), ])
07 · Dynamic

Jinja integration

Mix server-side variables and conditionals into your Dart-built HTML.

Server variables

language → en
year → 2026

Conditional rendering

Please log in to continue.