[](https://daseldocs.tomwright.me)
[](https://goreportcard.com/report/github.com/tomwright/dasel/v3)
[](https://pkg.go.dev/github.com/tomwright/dasel/v3)


[](https://codecov.io/gh/TomWright/dasel)
[](https://github.com/avelino/awesome-go)



[](https://github.com/TomWright/dasel/releases/latest)
[](https://formulae.brew.sh/formula/dasel)
# 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, and CSV.
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.
* **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](https://github.com/TomWright/dasel/releases) page for Linux, macOS, and Windows.
### None of the above?
See the [installation docs](https://daseldocs.tomwright.me/getting-started/installation) for more options.
---
## 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"
]
```
### Search (`search`)
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](https://daseldocs.tomwright.me).
---
## Contributing
Contributions are welcome! Please see the [CONTRIBUTING.md](./CONTRIBUTING.md) for details.
---
## License
MIT License. See [LICENSE](./LICENSE) for details.
## Stargazers over time
[](https://starchart.cc/TomWright/dasel)