Grafana vs Kibana: source lines of code compared

The Grafana vs Kibana comparison on OctoCounts shows side-by-side source line counts for grafana/grafana and elastic/kibana, counted under the rules and on the dates stated below: files, total lines, code lines, comment lines, blank lines, and per-language totals, pinned to the exact commits listed below.

This page compares the source lines of code (SLOC) of grafana/grafana and elastic/kibana using cached OctoCounts reports. Code size is not code quality: a larger count only means more source material, not a better or worse project.

As of 2026-11-05, grafana/grafana contains 4,818,066 total lines (4,141,104 code) across 21,750 files, while elastic/kibana contains 16,009,039 total lines (13,205,022 code) across 112,264 files as of 2026-11-05. elastic/kibana has about 3.2x the counted code lines of grafana/grafana under the same engine and counting rules. Code size is not code quality: a larger count only means more source material, not a better or worse project.

Metricgrafana/grafanaelastic/kibana
Files21,750112,264
Total lines4,818,06616,009,039
Code lines4,141,10413,205,022
Comment lines259,3551,370,389
Blank lines417,6071,433,628
Languages counted3322

Top languages in grafana/grafana: JSON (32.2% of code), Go (32.0% of code), TypeScript (16.2% of code). Top languages in elastic/kibana: TypeScript (53.8% of code), TSX (25.4% of code), JSON (10.1% of code). JSON, TypeScript, TSX, YAML appear in both top language lists; Go appears only in grafana/grafana's top languages; JavaScript appears only in elastic/kibana's top languages.

Methodology: both counts come from cached OctoCounts reports generated with tokei. grafana/grafana was counted at ref main (commit 3015ac6acf70) on 2026-11-05; elastic/kibana was counted at ref main (commit 6f5ce031f83c) on 2026-11-05. See the counting methodology for ignored directories and analysis options.

Both reports use the same engine and effective counting rules. Repository declarations, when enabled, are specific to each repository. grafana/grafana: tokei-15.0.0, policy directories-v1; docs excluded, tests excluded, generated excluded. Excluded directory names: .cache, .generated, .git, .next, __tests__, build, dist, doc, docs, documentation, fixtures, gen, generated, node_modules, target, test, tests, vendor. Ignored languages: none. Repository declarations: off. Exclusions are rule-based; they do not prove that every test, document or generated file was removed. elastic/kibana: tokei-15.0.0, policy directories-v1; docs excluded, tests excluded, generated excluded. Excluded directory names: .cache, .generated, .git, .next, __tests__, build, dist, doc, docs, documentation, fixtures, gen, generated, node_modules, target, test, tests, vendor. Ignored languages: none. Repository declarations: off. Exclusions are rule-based; they do not prove that every test, document or generated file was removed.

About this comparison

Background observations recorded on 2026-09-16; language descriptions here are historical context, not claims about the current filtered shares. Use this page's measured language breakdown for current counts. Repository layout before counting filters: grafana/grafana is the Grafana repository: the server backend, the frontend, and a large set of in-tree plugins. elastic/kibana is the Kibana repository: the data-visualization application for the Elastic Stack, including its own plugin modules. Both are full application monorepos rather than libraries, counted on the dates shown above.

The per-language tables reflect each project's shape directly: Grafana's counted code is split between a Go backend and a TypeScript frontend, while Kibana's counted code is predominantly TypeScript for the application and its plugin surface.

Both counts include in-tree plugin and module code, so each total substantially measures extension surface maintained inside the main repository, not only the core application.

These counts describe the visualization applications only. Query execution happens in the data sources they connect to, so neither number says anything about search or analytics engine capability.

Sources: grafana/grafana repository (backend, frontend, and in-tree plugins) · elastic/kibana repository. Statements verified 2026-09-16.

Evidence and next steps:

Saved reports remain subject to cache cleanup and replacement. Export their JSON for durable citation; live report URLs can change.

Note: code size is not code quality. OctoCounts only reports reproducible line counts and makes no claim that either project is better.

Compare FAQ

Which has more lines of code, grafana/grafana or elastic/kibana?

As of 2026-11-05, grafana/grafana contains 4,818,066 total lines (4,141,104 code) across 21,750 files, while elastic/kibana contains 16,009,039 total lines (13,205,022 code) across 112,264 files as of 2026-11-05. elastic/kibana has about 3.2x the counted code lines of grafana/grafana under the same engine and counting rules. Code size is not code quality: a larger count only means more source material, not a better or worse project.

Does more source lines of code mean more complexity?

Not necessarily. SLOC measures size, not complexity, quality, or maintainability. A larger codebase can mean more features, more generated or vendored code, more verbose language idioms, or more tests — none of which imply the code is harder to work with. Use SLOC to gauge the scale of what you'd be reading or maintaining, not as a quality signal for grafana/grafana, elastic/kibana, or any repository.

How is this comparison calculated?

Methodology: both counts come from cached OctoCounts reports generated with tokei. grafana/grafana was counted at ref main (commit 3015ac6acf70) on 2026-11-05; elastic/kibana was counted at ref main (commit 6f5ce031f83c) on 2026-11-05. See the counting methodology for ignored directories and analysis options.

Can I compare a different branch, tag, or commit?

Yes. This page shows the default branch for each repository. Use the interactive comparison tool to pick any public GitHub repository, branch, tag, or commit SHA for both sides and get a fresh side-by-side report.