# pydoc > platformdirs

---
type: CommandReference
command: platformdirs
mode: pydoc
section: ''
source: pydoc3
---

## Quick Reference
- `PlatformDirs(appname).user_data_dir` — get user data directory (e.g., `~/.local/share/<appname>`)
- `PlatformDirs(appname, version).user_cache_dir` — get cache directory (e.g., `~/.cache/<appname>/<version>`)
- `PlatformDirs(appname).user_config_dir` — get config directory (e.g., `~/.config/<appname>`)
- `PlatformDirs(appname).user_log_dir` — get log directory (same as `user_data_dir` if not opinionated, else `log` subdirectory)
- `PlatformDirs(appname).user_runtime_dir` — get runtime directory (e.g., `/run/user/$(id -u)/<appname>`)
- `PlatformDirs(appname).user_state_dir` — get state directory (e.g., `~/.local/state/<appname>`)
- `PlatformDirs(appname).site_data_dir` — get shared data directory (e.g., `/usr/local/share/<appname>`)
- `PlatformDirs(appname, multipath=True).site_config_dir` — get shared config directories (e.g., `/etc/xdg/<appname>`)

## Name
Utilities for determining application-specific directories.

## Synopsis
python
from platformdirs import PlatformDirs

dirs = PlatformDirs(
    appname="MyApp",
    appauthor=None,
    version="1.0",
    roaming=False,
    multipath=False,
    opinion=True
)
# Access directory properties:
user_data = dirs.user_data_dir
user_cache = dirs.user_cache_dir
## Properties

### Class `PlatformDirs` (alias for `Unix`)
Constructor parameters:
- `appname` (str | None, default None) — application name
- `appauthor` (str | None | Literal[False], default None) — author name (not used on Unix)
- `version` (str | None, default None) — version string appended to path
- `roaming` (bool, default False) — ignored on Unix
- `multipath` (bool, default False) — if True, return list of paths separated by OS separator
- `opinion` (bool, default True) — if True, use opinionated defaults (e.g., `log` subdirectory)

Readonly properties (return `str` directories, respecting `multipath` and environment variables):

| Property | Typical default (or env override) |
|----------|-----------------------------------|
| `user_data_dir` | `~/.local/share/$appname/$version` (`$XDG_DATA_HOME`) |
| `user_config_dir` | `~/.config/$appname/$version` (`$XDG_CONFIG_HOME`) |
| `user_cache_dir` | `~/.cache/$appname/$version` (`$XDG_CACHE_HOME`) |
| `user_state_dir` | `~/.local/state/$appname/$version` (`$XDG_STATE_HOME`) |
| `user_log_dir` | `user_data_dir`/log (if opinionated) |
| `user_runtime_dir` | `/run/user/$(id -u)/$appname/$version` (`$XDG_RUNTIME_DIR`) |
| `user_documents_dir` | `~/Documents` |
| `site_data_dir` | `/usr/local/share/$appname/$version` or `/usr/share` |
| `site_config_dir` | `/etc/xdg/$appname/$version` (`$XDG_CONFIG_DIRS`) |
| `site_data_path` | first item from `site_data_dir` (ignores multipath) |
| `site_config_path` | first item from `site_config_dir` |

Also available as `Path` variants: `user_data_path`, `user_config_path`, `user_cache_path`, `user_state_path`, `user_log_path`, `user_runtime_path`, `user_documents_path`.

### Class `PlatformDirsABC`
Abstract base class. Defines the same properties and constructor parameters. Unix implementations follow the [XDG Base Directory Specification](https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html).

## Examples

### Basic usage
python
from platformdirs import PlatformDirs

dirs = PlatformDirs("MyApp", version="1.0")
print(dirs.user_data_dir)      # ~/.local/share/MyApp/1.0
print(dirs.user_cache_dir)     # ~/.cache/MyApp/1.0
print(dirs.user_config_dir)    # ~/.config/MyApp/1.0
print(dirs.user_log_dir)       # ~/.local/share/MyApp/1.0/log
print(dirs.user_runtime_dir)   # /run/user/1000/MyApp/1.0
### Using multipath
python
dirs = PlatformDirs("MyApp", multipath=True)
print(dirs.user_data_dir)  # may include multiple paths joined by ':'
## See Also
- [Platformdirs GitHub](https://github.com/platformdirs/platformdirs)
- [XDG Base Directory Specification](https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html)
- `appdirs` (legacy alternative)