# unihan-etl > Download, search, and export Unicode’s UNIHAN CJK character dataset. Normalizes raw Unicode data files into clean JSON, CSV, or YAML. ## Documentation - [Quickstart](https://unihan-etl.git-pull.com/quickstart/): Assure you have at least python >= 3.7. - [CLI Reference](https://unihan-etl.git-pull.com/cli/): Download and cache the UNIHAN database. - [API Reference](https://unihan-etl.git-pull.com/api/): ETL pipeline and Packager: download, normalize, export. - [Topics](https://unihan-etl.git-pull.com/topics/): The Unicode Han Database: scope, structure, and field categories. - [Internals](https://unihan-etl.git-pull.com/internals/): Internal module reference for contributors and plugin authors. - [Project](https://unihan-etl.git-pull.com/project/): Information for contributors and maintainers. - [Changelog](https://unihan-etl.git-pull.com/history/): To install the unreleased unihan-etl version, see developmental releases. ## More - [Migration notes](https://unihan-etl.git-pull.com/migration/): Migration and deprecation notes for unihan-etl are here, see history as well. ## Documentation - [Constants - unihan_etl.constants](https://unihan-etl.git-pull.com/api/constants/): Constants for unihan_etl. - [Core - unihan_etl.core](https://unihan-etl.git-pull.com/api/core/): Download + ETL UNIHAN into structured format and export it. - [Expansion - unihan_etl.expansion](https://unihan-etl.git-pull.com/api/expansion/): Functions to uncompact details inside field values. - [Options - unihan_etl.options](https://unihan-etl.git-pull.com/api/options/): Configuration for the unihan-etl package. - [pytest plugin](https://unihan-etl.git-pull.com/api/pytest-plugin/): unihan-etl ships a pytest plugin that downloads UNIHAN.zip once and reuses it across tests, plus an isolated home directory for cache and config setup. The plugin auto-discovers via the pytest11 en... - [Test helpers - unihan_etl.test](https://unihan-etl.git-pull.com/api/test/): Test helpers functions for downloading and processing Unihan data. - [Typings - unihan_etl.types](https://unihan-etl.git-pull.com/api/types/): Typings for unihan-etl. - [Utilities - unihan_etl.util](https://unihan-etl.git-pull.com/api/utils/): Utilities for parsing UNIHAN’s data and structures. - [unihan-etl download](https://unihan-etl.git-pull.com/cli/download/): Download and cache the UNIHAN database without exporting. - [unihan-etl export](https://unihan-etl.git-pull.com/cli/export/): Export UNIHAN data to CSV, JSON, or YAML format. - [unihan-etl fields](https://unihan-etl.git-pull.com/cli/fields/): List available UNIHAN fields with their descriptions and source files. - [unihan-etl files](https://unihan-etl.git-pull.com/cli/files/): List available UNIHAN source files. - [unihan-etl search](https://unihan-etl.git-pull.com/cli/search/): Look up character data in the UNIHAN database. - [App directories - unihan_etl._internal.app_dirs](https://unihan-etl.git-pull.com/internals/api/app_dirs/): AppDir wrapper for appdirs package. - [Internal API](https://unihan-etl.git-pull.com/internals/api/) - [Code Style](https://unihan-etl.git-pull.com/project/code-style/): unihan-etl uses ruff for both formatting and linting. - [Contributing](https://unihan-etl.git-pull.com/project/contributing/): unihan-etl is part of the cihai project. Development conventions, issue triage, and PR guidelines follow the shared cihai contributing guide: - [Releasing](https://unihan-etl.git-pull.com/project/releasing/): unihan-etl follows semantic versioning. Until 1.0, minor releases may include breaking API changes. - [Frequently Asked Questions](https://unihan-etl.git-pull.com/topics/faq/): … Why are some fields, e.g. kTotalStrokes, in lists when there’s seemingly not any multi-value data? - [About UNIHAN](https://unihan-etl.git-pull.com/topics/unihan/): There are many languages and writing systems around the world. Computers internally use numbers to represent characters in writing systems. As computers became more prominent, hundreds of encoding ...