# What is ENSRainbow?

ENSRainbow is an open-source public good designed to make the "unknown, known" by healing millions of unknown ENS (Ethereum Name Service) names. It functions as a sidecar service for ENSNode, the full-stack development platform for ENSv2.

ENSRainbow builds upon work from The Graph Protocol (original ENS rainbow tables) and ENS Labs (ENS Subgraph development and maintenance). It is part of the NameHash Labs suite of tools dedicated to supporting the growth of the ENS Protocol.
**New to ENSRainbow?:** Visit [ensrainbow.io](https://ensrainbow.io) for a high-level introduction to ENSRainbow, including what it does, why it matters, and how it fits into ENSNode.

## The Problem: Unknown Labels

The ENS Registry allows subnames to be created onchain without revealing onchain what those subnames are. As a result, when querying indexed ENS names, some names include labels represented as encoded labelhashes (e.g., `[428...b0b]`). These represent unknown labels and are an unfortunate user experience issue in the ENS ecosystem.

For a comprehensive explanation of unknown labels — what they are, why they exist, how they're formatted, and their impact on indexing and applications — see [Unknown Labels](/docs/services/ensrainbow/concepts/unknown-labels/).

## How ENSRainbow Helps

ENSRainbow significantly improves "name [healing](/docs/services/ensrainbow/concepts/glossary#heal)" coverage compared to relying solely on services like the ENS Subgraph. Its goal is to heal as many ENS names as possible, minimizing the probability that end-users encounter unknown labels.

Key aspects of ENSRainbow include:

- **Resolving Encoded Labelhashes:** It translates cryptic labelhashes into human-readable labels via [healing](/docs/services/ensrainbow/concepts/glossary#heal).
- **Sidecar to ENSNode:** It integrates with ENSNode to provide deterministic name healing across time.
- **Improved Healing Coverage:** Aims to minimize the probability that end-users encounter unknown labels, far exceeding previous capabilities.
- **Extensible and Decentralized Data Management:** Uses a label set ID and label set version system for enabling any number of different label sets (collections of rainbow records) to support incremental updates across time.

## Documentation Structure

This documentation is organized into focused sections to help you find what you need quickly:

### Concepts

Understanding the fundamentals - terminology, data models, and why ENSRainbow works the way it does.

[Core Concepts](/docs/services/ensrainbow/concepts/)

### Usage

Practical guides for integrating ENSRainbow into your applications.

[Integration Guides](/docs/services/ensrainbow/usage/)

### Deployment

Running your own ENSRainbow instance for control, privacy, or scale.

[Deployment Guide](/docs/services/ensrainbow/deploying/)

### Contributing

Contributing to the project and running ENSRainbow locally for development.

[Contributing Guide](/docs/services/ensrainbow/contributing/)

## Quick Start

Ready to try ENSRainbow? Here are the fastest ways to get started:

### Try the Public API

Start with a simple HTTP request to heal labelhashes immediately. The public API requires no setup and provides instant access to ENSRainbow's healing capabilities.

[API Reference](/docs/services/ensrainbow/usage/api/)

### Use the TypeScript SDK

Get type-safe integration with built-in error handling and caching. Perfect for JavaScript/TypeScript applications.

[Client SDK Guide](/docs/services/ensrainbow/usage/client-sdk/)

### Deploy with Docker

Run your own ENSRainbow instance for control, privacy, or high-volume usage. The HTTP server starts immediately; poll `/ready` to gate traffic until the database bootstrap completes.

[Docker Deployment Guide](/docs/services/ensrainbow/deploying/docker/)

Choose your path above and dive into the relevant documentation section!