Open-Source Wikis

/

Tailwind CSS

/

By the numbers

tailwindlabs/tailwindcss

By the numbers

Data collected on 2026-04-30 against origin/main at 1ca0aacd.

Size

xychart-beta horizontal
    title "Lines of code by language"
    x-axis ["TypeScript", "Rust", "CSS", ".mjs scripts", "Markdown"]
    y-axis "Lines"
    bar [126338, 19449, 943, 440, 5124]
Category Count
TypeScript source + tests 126,338
Rust source + tests 19,449
CSS (preflight, theme, ...) 943
Markdown 5,124
.mjs build scripts 440
Total commits in history 6,706
Total tags 152+
File category Count
.ts files 300
.test.ts files 118
.rs files 58
.css files 18

The repo is a hybrid pnpm + Cargo workspace with 9 published TypeScript packages (packages/) and 4 Rust crates (crates/). One TypeScript package (internal-example-plugin) is a private test fixture.

Per-package size

Directory Files Lines
packages/tailwindcss/src 122 88,152
packages/@tailwindcss-upgrade/src 79 11,296
crates/oxide/src 41 10,136
packages/@tailwindcss-cli/src 15 1,991
packages/@tailwindcss-node/src 12 1,262
packages/@tailwindcss-postcss/src 6 1,247
packages/@tailwindcss-vite/src 1 689
packages/@tailwindcss-browser/src 4 338
packages/@tailwindcss-webpack/src 1 287
crates/node/src 2 281
packages/@tailwindcss-standalone/src 2 109

The compiler package alone (packages/tailwindcss/src) is roughly 70% of all TypeScript source. The two largest files in the tree are inside it:

File Lines
packages/tailwindcss/src/utilities.ts ~7,800
packages/tailwindcss/src/canonicalize-candidates.ts ~3,300
crates/ignore/src/walk.rs (vendored crate) ~2,800
packages/tailwindcss/tests/ui.spec.ts ~2,000
crates/oxide/tests/scanner.rs ~1,800

Activity

Span Commits
Lifetime (since first commit, Jul 2017) 6,706
Since Jan 2024 (the v4 era) 1,486

Most directories are touched continuously. Last activity timestamps for the major source directories on origin/main:

Directory Last activity
packages/tailwindcss 2026-04-30
crates/oxide 2026-04-29
packages/@tailwindcss-vite 2026-04-29
packages/@tailwindcss-postcss 2026-04-29
packages/@tailwindcss-upgrade 2026-04-29
crates/node 2026-04-26
packages/@tailwindcss-cli 2026-04-24
packages/@tailwindcss-node 2026-04-24
packages/@tailwindcss-webpack 2026-04-24
packages/@tailwindcss-browser 2026-04-24

Earliest commit per top-level v4 directory (the v4 reset; pre-v4 history exists for the legacy code that has since been removed):

Directory First commit
packages/tailwindcss 2024-03-05
packages/@tailwindcss-cli 2024-03-06
packages/@tailwindcss-vite 2024-03-05
packages/@tailwindcss-postcss 2024-03-05
crates/oxide 2024-03-23
crates/node 2024-03-23
packages/@tailwindcss-node 2024-09-02
packages/@tailwindcss-upgrade 2024-09-18
packages/@tailwindcss-browser 2025-01-07
packages/@tailwindcss-webpack 2026-01-29

Bot-attributed commits

Roughly 1,210 commits on origin/main carry a bot attribution (commits whose author or Co-authored-by trailer matches bot], dependabot, github-actions, or renovate). That is about 18% of all commits, dominated by depfu[bot] (602 commits) and dependabot-preview[bot] / dependabot[bot] (404 combined). These are dependency-bump commits, not feature work.

This is a lower bound on AI- or automation-assisted contributions: it counts only commits attributed to a known bot account in git metadata. Inline AI assistance (Copilot-style) leaves no signal in git history.

Complexity

Largest non-test files give a sense of where complexity concentrates. Three files dominate:

  • packages/tailwindcss/src/utilities.ts — registers every built-in utility (~7,800 lines).
  • packages/tailwindcss/src/canonicalize-candidates.ts — ~3,300 lines of normalization rules.
  • packages/tailwindcss/src/variants.ts — ~1,300 lines registering the built-in variants.

On the Rust side, the extractor (crates/oxide/src/extractor/) is split across 13 state-machine files of roughly 200–800 lines each, with mod.rs glueing them together (1,200 lines).

There are 17 TODO/FIXME/HACK markers across packages/ and crates/ source — a small backlog by codebase size.

Notes

  • Per-contributor stats are intentionally omitted from this page. See maintainers for ownership mapping that uses CODEOWNERS plus recent committers.
  • All counts above use ripgrep-equivalent file-walks limited to source directories. They do not include node_modules/, dist/, target/, or __snapshots__/ outputs.

Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.

By the numbers – Tailwind CSS wiki | Factory