GitPedia

Dasel

Unified querying, transformation, and modification of JSON, TOML, YAML, XML, INI, HCL, KDL and CSV.

From TomWright·Updated June 14, 2026·View on GitHub·

Dasel (short for **Data-Select**) is a command-line tool and library for querying, modifying, and transforming data structures such as JSON, YAML, TOML, XML, CSV, and KDL. The project is written primarily in Go, distributed under the MIT License license, first published in 2020. It has gained significant community traction with 7,976 stars and 167 forks on GitHub. Key topics include: cli, config, configuration, data-processing, data-structures.

Latest release: v3.11.0
May 19, 2026View Changelog →

Gitbook
Go Report Card
PkgGoDev
Test
Build
codecov
Mentioned in Awesome Go
GitHub Downloads
Homebrew Formula Downloads
GitHub License
GitHub tag (latest by date)
Homebrew tag (latest by date)

<div align="center"> <img src="./daselgopher.png" alt="Dasel mascot" width="250"/> </div>

Dasel

Dasel (short for Data-Select) is a command-line tool and library for querying, modifying, and transforming data structures such as JSON, YAML, TOML, XML, CSV, and KDL.

It provides a consistent, powerful syntax to traverse and update data — making it useful for developers, DevOps, and data wrangling tasks.


Features

  • Multi-format support: JSON, YAML, TOML, XML, CSV, HCL, INI, KDL.
  • Unified query syntax: Access data in any format with the same selectors.
  • Query & search: Extract values, lists, or structures with intuitive syntax.
  • Modify in place: Update, insert, or delete values directly in structured files.
  • Convert between formats: Seamlessly transform data from JSON → YAML, TOML → JSON, etc.
  • Script-friendly: Simple CLI integration for shell scripts and pipelines.
  • Library support: Import and use in Go projects.

Installation

Homebrew (macOS/Linux)

sh
brew install dasel

Go Install

sh
go install github.com/tomwright/dasel/v3/cmd/dasel@master

Prebuilt Binaries

Prebuilt binaries are available on the Releases page for Linux, macOS, and Windows.

None of the above?

See the installation docs for more options.


Shell Completion

Dasel supports tab-completion for Bash, Zsh, Fish, and PowerShell. Generate and load the completion script for your shell:

sh
# Bash source <(dasel completion bash) # Zsh source <(dasel completion zsh) # Fish dasel completion fish | source # PowerShell dasel completion powershell | Out-String | Invoke-Expression

See the shell completion docs for permanent installation instructions.

Man Page

Generate and view the man page:

sh
dasel man | man -l -

Basic Usage

Selecting Values

By default, Dasel evaluates the final selector and prints the result.

sh
echo '{"foo": {"bar": "baz"}}' | dasel -i json 'foo.bar' # Output: "baz"

Modifying Values

Update values inline:

sh
echo '{"foo": {"bar": "baz"}}' | dasel -i json 'foo.bar = "bong"' # Output: "bong"

Use --root to output the full document after modification:

sh
echo '{"foo": {"bar": "baz"}}' | dasel -i json --root 'foo.bar = "bong"' # Output: { "foo": { "bar": "bong" } }

Update values based on previous value:

sh
echo '[1,2,3,4,5]' | dasel -i json --root 'each($this = $this*2)' # Output: [ 2, 4, 6, 8, 10 ]

Format Conversion

sh
cat data.json | dasel -i json -o yaml

Recursive Descent (..)

Searches all nested objects and arrays for a matching key or index.

sh
echo '{"foo": {"bar": "baz"}}' | dasel -i json '..bar' # Output: [ "baz" ]

Finds all values matching a condition anywhere in the structure.

sh
echo '{"foo": {"bar": "baz"}}' | dasel -i json 'search(bar == "baz")' # Output: [ { "bar": "baz" } ]

Documentation

Full documentation is available at daseldocs.tomwright.me.


Contributing

Contributions are welcome! Please see the CONTRIBUTING.md for details.


License

MIT License. See LICENSE for details.

Stargazers over time

Stargazers over time

Contributors

Showing top 12 contributors by commit count.

View all contributors on GitHub →

This article is auto-generated from TomWright/dasel via the GitHub API.Last fetched: 6/14/2026