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 404 combined). These are dependency-bump commits, not feature work.dependabot-preview[bot] / dependabot[bot] (
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 1,200 lines).mod.rs glueing them together (
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.