# Introduction
**idt** (ID Tool) is a fast, ergonomic CLI tool for working with various identifier formats. Whether you need to generate, inspect, convert, or validate IDs, idt provides a unified interface for all your identifier needs.
## Key Features
- **Multi-format Support**: Work with UUID (all versions), ULID, NanoID, Snowflake, and more
- **Generate IDs**: Create new identifiers with customizable options
- **Inspect IDs**: Decode and analyze any supported ID format
- **Convert Formats**: Transform IDs between different encodings (hex, base64, base58, etc.)
- **Validate IDs**: Check if strings are valid identifiers
- **Compare IDs**: Analyze relationships between IDs (chronological, binary, lexicographic)
- **Pipe-friendly**: Designed for shell scripting and Unix pipelines
- **JSON Output**: Machine-readable output for integration with other tools
## Quick Example
```bash
# Generate a UUIDv7 (time-sortable)
$ idt gen uuidv7
019c04e5-6118-7b22-95cb-a10e84dad469
# Inspect the generated ID
$ idt inspect 019c04e5-6118-7b22-95cb-a10e84dad469
UUIDV7
019c04e5-6118-7b22-95cb-a10e84dad469
Time (UTC) 2026-01-28T13:57:47.416Z
Local Time (+09:00) 2026-01-28T22:57:47.416+09:00
Version 7
Variant RFC4122
Random 62 bits
Hex 019c04e561187b2295cba10e84dad469
Base64 AZwE5WEYeyKVy6EOhNrUaQ==
Int 2139325608653621017571381452845274217
# Convert to different formats
$ idt convert 019c04e5-6118-7b22-95cb-a10e84dad469 -f base64
AZwE5WEYeyKVy6EOhNrUaQ==
```
## Why idt?
Working with different ID formats often requires multiple tools or libraries. idt consolidates these into a single, fast CLI tool that:
1. **Auto-detects ID types** - No need to specify the format when inspecting or converting
2. **Provides rich metadata** - Extract timestamps, version info, and other embedded data
3. **Supports modern formats** - UUIDv7, ULID, and other time-sortable IDs
4. **Integrates with your workflow** - JSON output, stdin support, and Unix-friendly design
## Supported ID Types
| UUIDv1 | No | Yes | 128 | Timestamp + MAC address |
| UUIDv4 | No | No | 128 | Random |
| UUIDv6 | Yes | Yes | 128 | Reordered timestamp |
| UUIDv7 | Yes | Yes | 128 | Unix timestamp + random |
| ULID | Yes | Yes | 128 | Crockford Base32, lexicographically sortable |
| NanoID | No | No | ~126 | Compact URL-friendly ID |
| Snowflake | Yes | Yes | 64 | Twitter/Discord-style distributed ID |
See the [ID Types Overview](./id-types/README.md) for complete details on all supported formats.
## Getting Started
Ready to start using idt? Head to the [Installation](./installation.md) guide to get set up, then check out the [Quick Start](./quickstart.md) for common usage patterns.