Tokei (時計)
Tokei is a program that displays statistics about your code. Tokei will show the number of files, total lines within those files and code, comments, and blanks grouped by language.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Language Files Lines Code Comments Blanks
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
BASH 4 49 30 10 9
JSON 1 1332 1332 0 0
Shell 1 49 38 1 10
TOML 2 77 64 4 9
───────────────────────────────────────────────────────────────────────────────
Markdown 5 1355 0 1074 281
|- JSON 1 41 41 0 0
|- Rust 2 53 42 6 5
|- Shell 1 22 18 0 4
(Total) 1471 101 1080 290
───────────────────────────────────────────────────────────────────────────────
Rust 19 3416 2840 116 460
|- Markdown 12 351 5 295 51
(Total) 3767 2845 411 511
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Total 32 6745 4410 1506 829
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━- Features
- Installation
- Configuration
- How to use Tokei
- Options
- Badges
- Supported Languages
- Changelog
- Common 问题
- Canonical Source
- Copyright and License
-
Tokei is very fast, and is able to count millions of lines of code in seconds. Check out the 11.0.0 release to see how Tokei's speed compares to others.
-
Tokei is accurate, Tokei correctly handles multi line comments, nested comments, and not counting comments that are in strings. Providing an accurate code statistics.
-
Tokei has huge range of languages, supporting over 150 languages, and their various extensions.
-
Tokei can output in multiple formats(CBOR, JSON, YAML) allowing Tokei's output to be easily stored, and reused. These can also be reused in tokei combining a previous run's statistics with another set.
-
Tokei is available on Mac, Linux, and Windows. See installation instructions for how to get Tokei on your platform.
-
Tokei is also a library allowing you to easily integrate it with other projects.
-
Tokei comes with and without color. Set the env variable NO_COLOR to 1, and it'll be black and white.
# Alpine Linux (since 3.13)
apk add tokei
# Arch Linux
pacman -S tokei
# Cargo
cargo install tokei
# Conda
conda install -c conda-forge tokei
# Fedora
sudo dnf install tokei
# FreeBSD
pkg install tokei
# NetBSD
pkgin install tokei
# Nix/NixOS
nix-env -i tokei
# OpenSUSE
sudo zypper install tokei
# Void Linux
sudo xbps-install tokei# Homebrew
brew install tokei
# MacPorts
sudo port selfupdate
sudo port install tokei# Winget
winget install XAMPPRocky.tokei
# Scoop
scoop install tokeiYou can download prebuilt binaries in the releases section.
You can also build and install from source (requires the latest stable Rust compiler.)
cargo install --git https://github.com/XAMPPRocky/tokei.git tokeiTokei has a configuration file that allows you to change default behaviour.
The file can be named tokei.toml or .tokeirc. Currently tokei looks for
this file in three different places. The current directory, your home directory,
and your configuration directory.
This is the basic way to use tokei. Which will report on the code in ./foo
and all subfolders.
$ tokei ./fooTo have tokei report on multiple folders in the same call simply add a comma, or a space followed by another path.
$ tokei ./foo ./bar ./baz$ tokei ./foo, ./bar, ./bazTokei will respect all .gitignore and .ignore files, and you can use
the --exclude option to exclude any additional files. The --exclude flag has
the same semantics as .gitignore.
$ tokei ./foo --exclude *.rsPaths to exclude can also be listed in a .tokeignore file, using the same
syntax as .gitignore files.
By default tokei sorts alphabetically by language name, however using --sort
tokei can also sort by any of the columns.
blanks, code, comments, lines
$ tokei ./foo --sort codeBy default tokei only outputs the total of the languages, and using --files
flag tokei can also output individual file statistics.
$ tokei ./foo --filesTokei normally outputs into a nice human readable format designed for terminals.
There is also using the --output option various other formats that are more
useful for bringing the data into another program.
Note: This version of tokei was compiled without any serialization formats, to enable serialization, reinstall tokei with the features flag.
ALL:
cargo install tokei --features all
CBOR:
cargo install tokei --features cbor
YAML:
cargo install tokei --features yamlCurrently supported formats
- JSON
--output json - YAML
--output yaml - CBOR
--output cbor
$ tokei ./foo --output jsonTokei can also take in the outputted formats added in the previous results to its current run. Tokei can take either a path to a file, the format passed in as a value to the option, or from stdin.
$ tokei ./foo --input ./stats.jsonUSAGE:
tokei [FLAGS] [OPTIONS] [--] [input]...
FLAGS:
-f, --files Will print out statistics on individual files.
-h, --help Prints help information
--hidden Count hidden files.
-l, --languages Prints out supported languages and their extensions.
--no-ignore Don't respect ignore files (.gitignore, .ignore, etc.). This implies --no-ignore-parent,
--no-ignore-dot, and --no-ignore-vcs.
--no-ignore-dot Don't respect .ignore and .tokeignore files, including those in parent directories.
--no-ignore-parent Don't respect ignore files (.gitignore, .ignore, etc.) in parent directories.
--no-ignore-vcs Don't respect VCS ignore files (.gitignore, .hgignore, etc.), including those in parent
directories.
-V, --version Prints version information
-v, --verbose Set log output level:
1: to show unknown file extensions,
2: reserved for future debugging,
3: enable file level trace. Not recommended on multiple files
OPTIONS:
-c, --columns <columns> Sets a strict column width of the output, only available for terminal output.
-e, --exclude <exclude>... Ignore all files & directories matching the pattern.
-i, --input <file_input> Gives statistics from a previous tokei run. Can be given a file path, or "stdin" to
read from stdin.
-o, --output <output> Outputs Tokei in a specific format. Compile with additional features for more format
support. [possible values: cbor, json, yaml]
-s, --sort <sort> Sort languages based on column [possible values: files, lines, blanks, code, comments]
-t, --type <types> Filters output by language type, separated by a comma. i.e. -t=Rust,Markdown
ARGS:
<input>... The path(s) to the file or directory to be counted.
Tokei has support for badges. For example
.
[](https://github.com/XAMPPRocky/tokei).
Tokei's URL scheme is as follows.
https://tokei.rs/b1/{host: values: github|gitlab}/{Repo Owner eg: XAMPPRocky}/{Repo name eg: tokei}
By default the badge will show the repo's LoC(Lines of Code), you can also
specify for it to show a different category, by using the ?category= query
string. It can be either code, blanks, files, lines, comments,
Example show total lines:
[](https://github.com/XAMPPRocky/tokei).
The server code hosted on tokei.rs is in XAMPPRocky/tokei_rs
Tokei is available in a small alpine-based docker image, buildable through earthly:
earthly +dockerOnce built, one can run the image with:
docker run --rm -v /path/to/analyze:/src tokei .Or, to simply analyze the current folder (linux):
docker run --rm -v $(pwd):/src tokei .If there is a language that you would to add to tokei feel free to make a pull
request. Languages are defined in languages.json, and you can
read how to add and test your language in our CONTRIBUTING.md.
.NET Resource
8th
ABAP
ABNF
ActionScript
Ada
Agda
Alex
Alloy
Apache Velocity
Arduino C++
Arturo
AsciiDoc
ASN.1
ASP
ASP.NET
Assembly
Astro
ATS
Autoconf
AutoHotKey
Autoit
Automake
AWK
Ballerina
BASH
Batch
Bazel
Bean
Bitbake
BrightScript
C
C Header
C Shell
C#
C++
C++ Header
Cabal
Cairo
Cassius
Ceylon
Chapel
Circom
Clojure
ClojureC
ClojureScript
CMake
COBOL
CodeQL
CoffeeScript
Cogent
ColdFusion
ColdFusion CFScript
Common Lisp
Coq
Crystal
CSS
CUDA
Cython
D
DAML
Dart
Device Tree
Dhall
Dockerfile
Dream Maker
Dust.js
Ebuild
EdgeDB
EdgeDB Schema Definition
EdgeQL
Edn
Elixir
Elm
Elvish
Emacs Dev Env
Emacs Lisp
Emojicode
Erlang
Euphoria
F#
F*
Factor
FEN
Fennel
Fish
FlatBuffers Schema
Forge Config
Forth
FORTRAN Legacy
FORTRAN Modern
FreeMarker
Futhark
GDB Script
GDScript
Gherkin (Cucumber)
Gleam
GLSL
Gml
GNU Style Assembly
Go
Go HTML
GraphQL
Groovy
Gwion
Haml
Hamlet
Handlebars
Happy
Haskell
Haxe
HCL
Headache
HEX
HICAD
HLSL
HolyC
HTML
Hy
Idris
INI
Intel HEX
Isabelle
J
JAI
Janet
Java
JavaScript
Jinja2
jq
JSON
Jsonnet
JSX
Julia
Julius
Jupyter Notebooks
K
Kakoune script
Korn shell
Kotlin
KV Language
LALRPOP
LD Script
Lean
LESS
LFE
Lingua Franca
Liquid
LiveScript
LLVM
Logtalk
LOLCODE
Lua
Lucius
M4
Madlang
Makefile
Markdown
Max
Meson
Metal Shading Language
Mint
Mlatu
Module-Definition
MoonBit
MoonScript
MSBuild
Mustache
Nextflow
Nim
Nix
Not Quite Perl
NuGet Config
Nushell
Objective-C
Objective-C++
OCaml
Odin
Open Policy Agent
OpenQASM
OpenSCAD
OpenType Feature File
Org
Oz
Pacman's makepkg
Pan
Pascal
Perl
Pest
Phix
PHP
Plain Text
Poke
Polly
Pony
PostCSS
PowerShell
Processing
Prolog
Protocol Buffers
PRQL
PSL Assertion
Pug
Puppet
PureScript
Pyret
Python
Q
QCL
QML
R
Racket
Rakefile
Raku
Razor
Red
Redscript
Ren'Py
ReScript
ReStructuredText
Roc
RPM Specfile
Ruby
Ruby HTML
Rust
Rusty Object Notation
Sass
Scala
Scheme
Scons
ShaderLab
Shell
Slang
Smalltalk
Snakemake
Solidity
Specman e
Spice Netlist
SQF
SQL
SRecode Template
Stan
Standard ML (SML)
Stratego/XT
Stylus
Svelte
SVG
Swift
SWIG
SystemVerilog
TCL
Tera
TeX
The WenYan Programming Language
Thrift
TOML
TSX
TTCN-3
Twig
TypeScript
Typst
Uiua
UMPL
Unison
Unreal Markdown
Unreal Plugin
Unreal Project
Unreal Script
Unreal Shader
Unreal Shader Header
Ur/Web
Ur/Web Project
Vala
VB6
VBScript
Verilog
Verilog Args File
VHDL
Vim Script
Visual Basic
Visual Studio Project
Visual Studio Solution
Vue
WebAssembly
WebGPU Shader Language
Wolfram
Wren
XAML
Xcode Config
XML
XSL
Xtend
YAML
YAMLScript
ZenCode
Zig
ZoKrates
Zsh
This is likely due to gcc generating .d files. Until the D people decide on
a different file extension, you can always exclude .d files using the
-e --exclude flag like so
$ tokei . -e *.d
The canonical source of this repo is hosted on GitHub. If you have a GitHub account, please make your issues, and pull requests there.
- tokei-pie: Render tokei's output to interactive sunburst chart.
(C) Copyright 2015 by XAMPPRocky and contributors
See the graph for a full list of contributors.
Tokei is distributed under the terms of both the MIT license and the Apache License (Version 2.0).
See LICENCE-APACHE, LICENCE-MIT for more information.