# Is Holehe Open Source? Yes — Understanding Its GPL‑v3 License and Modular Architecture

> Is Holehe open source? Yes, discover the GPL-v3 license and modular architecture of this open source email verification tool. View, modify, and redistribute the codebase freely.

- Repository: [Palenath/holehe](https://github.com/megadose/holehe)
- Tags: internals
- Published: 2026-08-21

---

**Yes, Holehe is fully open‑source software released under the GNU General Public License v3.0, granting users the legal right to view, modify, and redistribute the codebase.**

Holehe is a Python 3 OSINT (Open Source Intelligence) tool that discovers whether an email address has registered accounts on more than 120 web services. Because Holehe is open source under GPL‑v3, security researchers and developers can audit the code, customize service modules, and embed the functionality into their own applications without licensing fees.

## Confirming Holehe's Open‑Source Status

The `megadose/holehe` repository on GitHub includes a complete **[`LICENSE.md`](https://github.com/megadose/holehe/blob/main/LICENSE.md)** file in the repository root that explicitly states the GPL‑v3 terms. This license permits anyone to use the software for any purpose, study how it works, share copies, and distribute modified versions—provided that derivative works also carry the same license terms. The presence of this license file confirms that Holehe meets the Open Source Initiative's definition of open‑source software.

## How the Open‑Source Architecture Works

Holehe's codebase is deliberately modular, making it straightforward for contributors to extend functionality. The architecture relies on asynchronous Python patterns using **`httpx`** and **`trio`** for concurrent, non‑blocking HTTP requests.

### Core Orchestration

In **[`holehe/core.py`](https://github.com/megadose/holehe/blob/main/holehe/core.py)**, the **`run()`** function serves as the main entry point. This file loads the module registry, initializes a shared `httpx.AsyncClient`, and aggregates results from all service checks. The core handles the concurrent execution of modules, ensuring that checking 120+ services happens in parallel rather than sequentially.

### Module Registry

The **[`holehe/modules/__init__.py`](https://github.com/megadose/holehe/blob/main/holehe/modules/__init__.py)** file dynamically imports each service‑specific checker. When the core engine initializes, it scans this registry to discover available modules, allowing new services to be added without hardcoding them into the main logic.

### Service Modules

Each supported platform lives in its own Python file under `holehe/modules/`. For example, **[`holehe/modules/social_media/instagram.py`](https://github.com/megadose/holehe/blob/main/holehe/modules/social_media/instagram.py)** implements the Instagram‑specific check by driving the password‑recovery or registration flow. Every module follows a standardized signature: an async function that accepts an email, an HTTP client, and a results list, then appends a dictionary with keys including **`name`**, **`exists`**, **`emailrecovery`**, and **`rateLimit`**.

## Using Holehe as Open‑Source Software

Because the source is available, you can run Holehe via CLI or embed it directly into Python applications.

### Command‑Line Usage

Install the package and check an email from your terminal:

```bash
holehe test@example.com

```

This executes all registered modules concurrently and prints a formatted table showing which services have accounts registered to the supplied email.

### Embedding in Python Applications

You can import specific modules or the full engine programmatically:

```python
import trio, httpx
from holehe.core import run

async def check_email(email):
    async with httpx.AsyncClient() as client:
        results = await run(email, client)
    return results

# Run the check

output = trio.run(check_email, "user@example.com")
for result in output:
    print(result)

```

This pattern allows you to integrate Holehe's OSINT capabilities into larger security tools or automation workflows while maintaining full control over the execution context.

## Summary

- **Holehe is GPL‑v3 licensed**, making it free to use, study, modify, and distribute according to open‑source principles.
- **The modular architecture** in [`holehe/core.py`](https://github.com/megadose/holehe/blob/main/holehe/core.py) and `holehe/modules/` allows easy extension by adding new service checkers.
- **Dual interfaces** provide both CLI convenience and programmatic Python API access via `trio` and `httpx`.
- **Standardized output schemas** ensure that results from all 120+ modules follow a consistent dictionary format with `exists`, `rateLimit`, and `emailrecovery` keys.

## Frequently Asked Questions

### Is Holehe free to use commercially?

Yes. The GPL‑v3 license permits commercial use without fees. However, if you modify the source code and distribute the software (including as part of a larger product), you must release your modifications under the same GPL‑v3 license terms and provide the source code to recipients.

### What license is Holehe released under?

Holehe is released under the **GNU General Public License version 3.0 (GPL‑v3)**. This is confirmed by the [`LICENSE.md`](https://github.com/megadose/holehe/blob/main/LICENSE.md) file in the repository root, which grants users the four essential freedoms of open‑source software: to run, study, redistribute, and modify the program.

### Can I modify and redistribute Holehe?

Yes. You can fork the `megadose/holehe` repository, modify the modules in `holehe/modules/`, and redistribute your version. GPL‑v3 requires that you include the license text and make your source code available to recipients if you distribute binaries or host the service publicly.

### How do I contribute new service modules to Holehe?

To add a new service, create a Python file in the appropriate subdirectory under `holehe/modules/` that implements an async function following the standard signature. The function must accept `(email, client, result_list)` parameters and append a dictionary with the required keys (`name`, `exists`, `rateLimit`, `emailrecovery`, etc.). Submit this module via pull request to the GitHub repository.