# shadps4-emu License Information: GPL-2.0-or-later and REUSE Compliance Guide

> Understand the shadps4-emu license: GPL-2.0-or-later with REUSE compliance. Learn about SPDX metadata and third-party component licensing for shadPS4.

- Repository: [shadps4-emu/shadPS4](https://github.com/shadps4-emu/shadPS4)
- Tags: license-information
- Published: 2026-03-19

---

**The shadPS4 emulator is licensed under GPL-2.0-or-later for its core codebase, with comprehensive REUSE compliance ensuring every file contains SPDX metadata and all third-party components properly declare their MIT, BSD, OFL-1.1, or BSL-1.0 terms.**

Understanding shadps4-emu license information is essential for developers, contributors, and redistributors working with this PlayStation 4 emulator. The project employs a dual-layer licensing strategy: the original emulator code falls under the GNU General Public License v2.0 or later, while bundled third-party libraries retain their original permissive licenses. All licensing data is machine-readable through SPDX headers and the REUSE.toml configuration file.

## Core Licensing Model of shadps4-emu

The shadps4-emu license information follows a strict separation between original code and external dependencies, ensuring compliance while maximizing code reuse.

### GPL-2.0-or-later for Core Emulator Code

All original source code in the `src/` directory is licensed under **GPL-2.0-or-later**. This includes critical components such as [`src/video_core/renderer_vulkan/vk_swapchain.cpp`](https://github.com/shadps4-emu/shadPS4/blob/main/src/video_core/renderer_vulkan/vk_swapchain.cpp), which contains the standard SPDX header:

```cpp
// SPDX-FileCopyrightText: 2026 shadPS4 Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later

```

The top-level `LICENSE` file contains the full text of GPL-2.0-or-later, establishing the legal foundation for the emulator's open-source distribution. Any modification or redistribution of the core emulator requires source code disclosure under the same license terms.

### Third-Party License Compatibility

shadps4-emu integrates numerous external libraries and assets, each retaining their original licenses compatible with GPL-2.0-or-later:

| Component | License | Location |
|-----------|---------|----------|
| **RenderDoc integration** | MIT | `externals/renderdoc/**` |
| **ImGui framework** | MIT | `externals/imgui/` |
| **Boost libraries** | BSL-1.0 | `externals/boost/` |
| **Noto Sans JP font** | OFL-1.1 | `src/imgui/renderer/fonts/NotoSansJP-Regular.ttf` |
| **Proggy Vector font** | MIT | `src/imgui/renderer/fonts/` |
| **Documentation assets** | CC0-1.0 / CC-BY-4.0 | Documentation directories |

The `LICENSES/` directory at the repository root contains verbatim copies of all these licenses, satisfying the REUSE requirement to provide full license texts for every SPDX identifier used in the project.

## How shadps4-emu Declares License Information

The project implements the **REUSE Specification** to ensure machine-readable licensing across all files.

### The REUSE.toml Configuration File

The [`REUSE.toml`](https://github.com/shadps4-emu/shadPS4/blob/main/REUSE.toml) file acts as the central licensing manifest, mapping file paths to their respective SPDX identifiers. It uses precedence rules for directories containing multiple files, such as `externals/**` and `src/imgui/renderer/fonts/**`, ensuring each third-party component retains its correct license annotation without requiring individual file headers.

This configuration allows automated tools to compute the complete license set for the entire repository by reading a single manifest file rather than parsing thousands of individual headers.

### SPDX Headers in Source Files

Every file in the repository contains explicit SPDX metadata. C++ source files include header comments:

```cpp
// SPDX-FileCopyrightText: 2026 shadPS4 Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later

```

Documentation files such as [`README.md`](https://github.com/shadps4-emu/shadPS4/blob/main/README.md) embed SPDX information in HTML comments:

```html
<!-- SPDX-FileCopyrightText: 2026 shadPS4 Emulator Project -->
<!-- SPDX-License-Identifier: GPL-2.0-or-later -->

```

This granular declaration ensures that individual files carry their licensing terms even when distributed outside the repository context, preventing accidental license separation.

### The LICENSES Directory Structure

The `LICENSES/` directory contains the complete legal texts for every license referenced in the project:

- [`GPL-2.0-or-later.txt`](https://github.com/shadps4-emu/shadPS4/blob/main/GPL-2.0-or-later.txt) for the core emulator
- [`MIT.txt`](https://github.com/shadps4-emu/shadPS4/blob/main/MIT.txt) for permissive third-party libraries
- [`OFL-1.1.txt`](https://github.com/shadps4-emu/shadPS4/blob/main/OFL-1.1.txt) for fonts
- [`BSL-1.0.txt`](https://github.com/shadps4-emu/shadPS4/blob/main/BSL-1.0.txt) for Boost components
- [`CC0-1.0.txt`](https://github.com/shadps4-emu/shadPS4/blob/main/CC0-1.0.txt) and [`CC-BY-4.0.txt`](https://github.com/shadps4-emu/shadPS4/blob/main/CC-BY-4.0.txt) for documentation

This structure satisfies the REUSE requirement to provide verbatim license copies while enabling automated tools to validate that every SPDX identifier has a corresponding full text file.

## Verifying shadps4-emu License Compliance

You can validate the licensing status of any shadps4-emu repository clone using the official REUSE command-line tools.

First, install the REUSE tool:

```bash
pip install reuse

```

Run the linter to verify that every file has a valid SPDX header and that all referenced licenses exist in the `LICENSES/` directory:

```bash
reuse lint

```

A compliant repository produces no errors. To generate a comprehensive license report for auditing purposes:

```bash
reuse dump --format json > license-report.json

```

This command outputs a JSON file listing every SPDX identifier in the project, including GPL-2.0-or-later for core components and the various MIT, BSL-1.0, and OFL-1.1 identifiers for third-party assets.

## Key Files for License Reference

When examining shadps4-emu license information, these specific paths define the legal framework:

| File Path | Purpose |
|-----------|---------|
| `LICENSE` | Full text of GPL-2.0-or-later governing the emulator core. |
| [`REUSE.toml`](https://github.com/shadps4-emu/shadPS4/blob/main/REUSE.toml) | Central manifest mapping file paths to SPDX license identifiers. |
| `LICENSES/` | Directory containing verbatim copies of all third-party licenses. |
| [`src/video_core/renderer_vulkan/vk_swapchain.cpp`](https://github.com/shadps4-emu/shadPS4/blob/main/src/video_core/renderer_vulkan/vk_swapchain.cpp) | Representative core file with GPL-2.0-or-later SPDX header. |
| `src/imgui/renderer/fonts/NotoSansJP-Regular.ttf` | Example font file under OFL-1.1 license. |
| `externals/renderdoc/**` | Example third-party MIT-licensed component. |

## Summary

- **shadps4-emu uses GPL-2.0-or-later** for its core emulator code, requiring source code disclosure for redistributions.
- **REUSE compliance** ensures every file contains SPDX metadata, with [`REUSE.toml`](https://github.com/shadps4-emu/shadPS4/blob/main/REUSE.toml) providing a centralized licensing map.
- **Third-party components** retain their original licenses (MIT, BSL-1.0, OFL-1.1, CC0-1.0) and are documented in the `LICENSES/` directory.
- **Automated verification** is available through the `reuse lint` and `reuse dump` commands to ensure ongoing compliance.

## Frequently Asked Questions

### What license is the shadPS4 emulator core released under?

The core emulator code is licensed under **GPL-2.0-or-later** (GNU General Public License version 2.0 or any later version). This is declared in the top-level `LICENSE` file and in SPDX headers within each source file, such as [`src/video_core/renderer_vulkan/vk_swapchain.cpp`](https://github.com/shadps4-emu/shadPS4/blob/main/src/video_core/renderer_vulkan/vk_swapchain.cpp). Any redistribution of the emulator must include the corresponding source code under the same license terms.

### Can I use shadps4-emu code in a commercial project?

Yes, the GPL-2.0-or-later license permits commercial use, but with important conditions. If you distribute the emulator or derivative works, you must provide the complete source code under GPL-2.0-or-later. Additionally, you must preserve the licenses of third-party components such as the MIT-licensed `externals/renderdoc/` or OFL-1.1 fonts in `src/imgui/renderer/fonts/`.

### How does shadps4-emu track licenses for third-party libraries?

The project uses the **REUSE Specification** to manage third-party licenses. The [`REUSE.toml`](https://github.com/shadps4-emu/shadPS4/blob/main/REUSE.toml) file maps directories like `externals/**` and `src/imgui/renderer/fonts/**` to their respective SPDX identifiers (MIT, BSL-1.0, OFL-1.1). The `LICENSES/` directory contains the full text of each license, allowing automated tools like `reuse lint` to verify that every file has proper licensing metadata.

### What is the purpose of SPDX headers in shadps4-emu source files?

SPDX headers make license information machine-readable and persistent. Each file contains comments like `SPDX-License-Identifier: GPL-2.0-or-later` and `SPDX-FileCopyrightText: 2026 shadPS4 Emulator Project`. This ensures that if a single file is extracted from the repository, it still carries its licensing terms. The headers also enable automated compliance checking through REUSE tools and support software composition analysis (SCA) systems.