{"id":13598906,"url":"https://github.com/jwt-rs/jwt-ui","last_synced_at":"2025-05-15T15:09:23.779Z","repository":{"id":201222515,"uuid":"703641741","full_name":"jwt-rs/jwt-ui","owner":"jwt-rs","description":"A command line UI for decoding/encoding JSON Web Tokens","archived":false,"fork":false,"pushed_at":"2025-03-27T03:19:04.000Z","size":3277,"stargazers_count":210,"open_issues_count":6,"forks_count":13,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-31T21:43:46.652Z","etag":null,"topics":["auth0","cli","hacktoberfest","jwt","jwtio","okta","rust","tui"],"latest_commit_sha":null,"homepage":"https://jwtui.cli.rs","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jwt-rs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["deepu105"]}},"created_at":"2023-10-11T16:10:40.000Z","updated_at":"2025-03-30T14:34:01.000Z","dependencies_parsed_at":"2024-04-17T04:26:12.215Z","dependency_job_id":"80ff51c9-2cd5-4c6d-b45b-6cb522e38324","html_url":"https://github.com/jwt-rs/jwt-ui","commit_stats":{"total_commits":109,"total_committers":5,"mean_commits":21.8,"dds":"0.14678899082568808","last_synced_commit":"992975008f2201522bb4d8c09de3e928102e1da6"},"previous_names":["jwt-rs/jwt-tui","jwt-rs/jwt-ui"],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jwt-rs%2Fjwt-ui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jwt-rs%2Fjwt-ui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jwt-rs%2Fjwt-ui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jwt-rs%2Fjwt-ui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jwt-rs","download_url":"https://codeload.github.com/jwt-rs/jwt-ui/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247737770,"owners_count":20987718,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["auth0","cli","hacktoberfest","jwt","jwtio","okta","rust","tui"],"created_at":"2024-08-01T17:00:57.996Z","updated_at":"2025-04-07T22:04:26.111Z","avatar_url":"https://github.com/jwt-rs.png","language":"Rust","funding_links":["https://github.com/sponsors/deepu105"],"categories":["💻 Apps"],"sub_categories":["🚀 Productivity and Utilities"],"readme":"# JWT UI - A Terminal UI for decoding/encoding JSON Web Tokens\n\n![ci](https://github.com/jwt-rs/jwt-ui/actions/workflows/ci.yml/badge.svg)\n![cd](https://github.com/jwt-rs/jwt-ui/actions/workflows/cd.yml/badge.svg)\n![License](https://img.shields.io/badge/license-MIT-blueviolet.svg)\n![LOC](https://tokei.rs/b1/github/jwt-rs/jwt-ui?category=code)\n[![crates.io link](https://img.shields.io/crates/v/jwt-ui.svg)](https://crates.io/crates/jwt-ui)\n![Release](https://img.shields.io/github/v/release/jwt-rs/jwt-ui?color=%23c694ff)\n![Docker Release](https://img.shields.io/docker/v/deepu105/jwt-ui?label=Docker%20version)\n[![Coverage](https://coveralls.io/repos/github/jwt-rs/jwt-ui/badge.svg?branch=main)](https://coveralls.io/github/jwt-rs/jwt-ui?branch=main)\n[![GitHub Downloads](https://img.shields.io/github/downloads/jwt-rs/jwt-ui/total.svg?label=GitHub%20downloads)](https://github.com/jwt-rs/jwt-ui/releases)\n![Crate.io downloads](https://img.shields.io/crates/d/jwt-ui?label=Crate%20downloads)\n![Docker pulls](https://img.shields.io/docker/pulls/deepu105/jwt-ui?label=Docker%20downloads)\n\n[![Follow Deepu K Sasidharan (deepu105)](https://img.shields.io/twitter/follow/deepu105?label=Follow%20Deepu%20K%20Sasidharan%20%28deepu105%29\u0026style=social)](https://twitter.com/intent/follow?screen_name=deepu105)\n\n```\n     ____.__      _____________       ____ ___.___\n    |    /  \\    /  \\__    ___/      |    |   \\   |\n    |    \\   \\/\\/   / |    |  ______ |    |   /   |\n/\\__|    |\\        /  |    | /_____/ |    |  /|   |\n\\________| \\__/\\  /   |____|         |______/ |___|\n                \\/\n```\n\nA terminal UI for decoding/encoding JSON Web Tokens inspired by [JWT.io](https://jwt.io/) and [jwt-cli](https://github.com/mike-engel/jwt-cli)\n\n![UI](screenshots/decoder.png)\n\nCrafted by\n\n\u003cimg src=\"artwork/Auth0byOkta_logo.svg\" alt=\"Auth0 by Okta\" style=\"width:120px;\"/\u003e\n\n## Table of Contents\n\n- [Features](#features)\n- [Installation](#installation)\n  - [Homebrew (Mac \u0026 Linux)](\u003c#homebrew-(mac-\u0026-linux)\u003e)\n  - [Scoop (Windows)](\u003c#scoop-(windows)\u003e)\n  - [Cargo](#cargo)\n  - [Arch Linux](#arch-linux)\n  - [Install script](#install-script)\n  - [Docker](#docker)\n  - [Manual](#manual)\n- [Usage](#usage)\n- [Screenshots](#screenshots)\n  - [Decoder screen](#decoder-screen)\n  - [Encoder screen](#encoder-screen)\n  - [Stdout](#stdout)\n- [Troubleshooting](#troubleshooting)\n- [Limitations/known issues](#limitations/known-issues)\n- [Libraries used](#libraries-used)\n- [License](#license)\n- [Release](#release)\n- [Creator](#creator)\n\n## Features\n\n- Fully offline\n- Supports secrets as plain text, file path (beginning with `@`) or base64 encoded string (beginning with `b64:`). Supported secret formats:\n  - **HMAC** - `HS{256,384,512}`: Plain text, base64 encoded string, JWKS (JSON text and `.json` file)\n  - **RSA** - `RS{256,384,512}`, `PS{256,384,512}`: PEM file, DER file, PKCS8 file, JWKS (JSON text and `.json` file)\n  - **ECDSA** - `ES{256,384}`: PEM file, DER file, PKCS8 file, JWKS (JSON text and `.json` file)\n  - **EdDSA** : PEM file, DER file, PKCS8 file, JWKS (JSON text and `.json` file)\n  - - Note: JWKS support is only for decoding. For encoding use PEM/DER/PKCS8 files for RSA/ECDSA/EdDSA and plain/base64 text for HMAC\n- Dark/Light themes\n- Sensible keyboard shortcuts and Mouse support\n- Copy to clipboard\n- STDOUT mode\n\n## Installation\n\n### Homebrew (Mac \u0026 Linux)\n\n```bash\nbrew tap jwt-rs/jwt-ui\nbrew install jwt-ui\n\n# If you need to be more specific, use:\nbrew install jwt-rs/jwt-ui/jwt-ui\n```\n\nTo upgrade\n\n```bash\nbrew upgrade jwt-ui\n```\n\n### Scoop (Windows)\n\n```bash\nscoop bucket add jwt-ui-bucket https://github.com/jwt-rs/scoop-jwt-ui\n\nscoop install jwt-ui\n```\n\n### Cargo\n\nIf you have Cargo installed then you install JWT UI from crates.io\n\n```bash\ncargo install jwt-ui --locked\n```\n\nYou can also clone the repo and run `cargo run` or `make` to build and run the app\n\n### Arch Linux\n\n[Maintained by [@orhun](https://github.com/orhun)]\n\n`jwt-ui` is available in the [official repositories](https://archlinux.org/packages/extra/x86_64/jwt-ui). You can install it using [pacman](https://wiki.archlinux.org/title/pacman):\n\n```bash\npacman -S jwt-ui\n```\n\n### Install script\n\nRun the below command to install the latest binary. Run with sudo if you don't have write access to `/usr/local/bin`. Else the script will install to the current directory\n\n```sh\ncurl https://raw.githubusercontent.com/jwt-rs/jwt-ui/main/deployment/getLatest.sh | bash\n```\n\n### Docker\n\nRun JWT UI as a Docker container.\n\n```bash\ndocker run --rm -it deepu105/jwt-ui\n```\n\nYou can also clone this repo and run `make docker` to build a docker image locally and run it using the above command\n\n### Manual\n\nBinaries for macOS (x86_64, arm64), Linux GNU/MUSL(x86_64, armv6, armv7, aarch64) and Windows (x86_64, aarch64) are available on the [releases](https://github.com/jwt-rs/jwt-ui/releases) page\n\n1. Download the latest [binary](https://github.com/jwt-rs/jwt-ui/releases) for your OS.\n1. For Linux/macOS:\n   1. `cd` to the file you just downloaded and run `tar -C /usr/local/bin -xzf downloaded-file-name`. Use sudo if required.\n   2. Run with `jwtui`\n1. For Windows:\n   1. Use 7-Zip or TarTool to unpack the tar file.\n   2. Run the executable file `jwtui.exe`\n\n## Usage\n\n```shell\n# Start UI\njwtui\n\n# Start UI with prefilled token to decode and options\njwtui [OPTIONS] [TOKEN]\n\n# Start UI with prefilled token to decode and JWKS secret from URL\njwtui -S $(curl https://domain.auth0.com/.well-known/jwks.json) [TOKEN]\n# if your provider has a different URL for JWKS, look for `jwks_uri` in https://your.idp.com/.well-known/openid-configuration\n\n# Print decoded token to stdout with HMAC plain text secret\njwtui -s -S 'plain_text_secret' [TOKEN]\n\n# Print decoded token to stdout without signature validation.\njwtui -sn [TOKEN]\n\n# Print decoded token to stdout with HMAC base64 encoded secret\njwtui -s -S 'b64:eW91ci0yNTYtYml0LXNlY3JldAo=' [TOKEN]\n\n# Print decoded token to stdout as JSON\njwtui -j -S '@./secret.pem' [TOKEN]\n\n# Print decoded token to stdout with JWKS secret from url\njwtui -s -S $(curl https://domain.auth0.com/.well-known/jwks.json) [TOKEN]\n```\n\nPress `?` while running the app to see keybindings\n\nArguments:\n[TOKEN] JWT token to decode [mandatory for stdout mode, optional for TUI mode]\n\nOptions:\n\n- `-S, --secret \u003cSECRET\u003e` Secret for validating the JWT. Can be text, file path (beginning with @) or base64 encoded string (beginning with b64:) [default: ]\n- `-s, --stdout` Print to STDOUT instead of starting the CLI in TUI mode\n- `-n, --no-verify` Do not validate the signature of the JWT when printing to STDOUT.\n- `-j, --json` Print to STDOUT as JSON\n- `-t, --tick-rate \u003cTICK_RATE\u003e` Set the tick rate (milliseconds): the lower the number the higher the FPS. Must be less than 1000 [default: 250]\n- `-d, --disable-mouse-capture`  Disable mouse capture in order to copy individual text\n- `-h, --help` Print help\n- `-V, --version` Print version\n\nIf you are looking for a non TUI CLI, check out [jwt-cli](https://github.com/mike-engel/jwt-cli)\n\n## Screenshots\n\n### Decoder screen\n\n![UI](screenshots/decoder.png)\n\n### Encoder screen\n\n![UI](screenshots/encoder.png)\n\n### Stdout\n\n![UI](screenshots/stdout.png)\n\n## Troubleshooting\n\n\u003e Note: On Debian/Ubuntu you might need to install `libxcb-xfixes0-dev` and `libxcb-shape0-dev`. On Fedora `libxcb` and `libxcb-devel` would be needed.\n\n\u003e Note: On Linux you might need to have package `xorg-dev` (Debian/Ubuntu) or `xorg-x11-server-devel` (Fedora) or equivalent installed for the copy to clipboard features to work\n\n## Limitations/known issues\n\n- **[Linux/Docker]** Copy to clipboard feature is OS/arch dependent and might crash in some Linux distros and is not supported on `aarch64` and `arm` machines.\n- **[macOS]** KDash looks better on iTerm2 since macOS's default Terminal app makes the colors render weird.\n- **[Windows]** KDash looks better on CMD since Powershell's default theme makes the colors look weird.\n\n## Libraries used\n\n- [jsonwebtoken](https://github.com/Keats/jsonwebtoken)\n- [ratatui](https://github.com/ratatui-org/ratatui)\n- [crossterm](https://github.com/crossterm-rs/crossterm)\n- [clap](https://github.com/clap-rs/clap)\n- [rust-clipboard](https://github.com/aweinstock314/rust-clipboard)\n\n## License\n\nMIT\n\n## Release\n\n1. Update the version in `Cargo.toml`\n2. Update release notes in `CHANGELOG.md`\n3. Commit the changes\n4. Run `make release V=vx.x.x` to release a new version via GitHub actions\n\n## Creator\n\n- [Deepu K Sasidharan](https://deepu.tech/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjwt-rs%2Fjwt-ui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjwt-rs%2Fjwt-ui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjwt-rs%2Fjwt-ui/lists"}