How to Install BepInEx: A Complete Setup Guide for Game Modding

If you've been exploring game mods — especially for Unity-based games like Lethal Company, Valheim, or Subnautica — you've almost certainly encountered BepInEx. It's the backbone of most modern PC game modding frameworks, and getting it installed correctly is the first real step into customizing your gameplay experience.

Here's everything you need to understand how BepInEx works, how to install it, and what factors shape the process depending on your setup.

What Is BepInEx and Why Does It Matter?

BepInEx (short for Bepis Injector Extensible) is an open-source plugin framework and patcher for Unity and .NET games. In plain terms, it acts as a bridge between a game's code and the mods you want to run. Without it, most mods simply have no way to inject their changes into a running game.

It works by loading before the game's own code executes, giving plugins the ability to modify game behavior, add new content, or adjust existing systems without altering the original game files directly. This non-destructive approach is a big reason it's become the standard for Unity game modding.

BepInEx supports two main game architectures:

  • IL2CPP — used by newer Unity games compiled with Unity's IL2CPP scripting backend
  • Mono — used by older or more traditionally structured Unity games

Knowing which architecture your target game uses is one of the most important variables in a successful install.

What You Need Before Installing

Before downloading anything, gather this information:

  • The game you're modding and its Unity backend type (Mono or IL2CPP)
  • Your operating system — Windows, Linux, or macOS, since BepInEx has different builds for each
  • Your CPU architecture — x64 is standard for most modern PCs, but x86 builds exist for 32-bit games
  • The correct BepInEx version — typically found on the BepInEx GitHub releases page

🔍 To find out whether a game uses Mono or IL2CPP, navigate to the game's installation folder. If you see a folder named <GameName>_Data alongside a folder called mono or MonoBleedingEdge, it's almost certainly Mono. If you see an il2cpp_data folder, it's IL2CPP.

Step-by-Step: How to Install BepInEx (Mono — Most Common)

This process covers the majority of popular moddable games.

1. Download the Correct Build

Go to the BepInEx GitHub releases page and download the version matching your OS and architecture. For most Windows users modding a Mono game, this is typically labeled something like BepInEx_win_x64_[version].zip.

2. Locate Your Game's Root Folder

Open your game library in Steam (or wherever you purchased the game), right-click the game, and select Manage > Browse Local Files. This opens the root directory — the folder that contains the main game executable (.exe file).

3. Extract the BepInEx Files

Extract the downloaded ZIP file directly into the game's root folder. After extraction, you should see:

  • A BepInEx folder
  • winhttp.dll (or equivalent for your OS)
  • doorstop_config.ini

These files need to sit alongside the game's .exe — not inside a subfolder.

4. Run the Game Once

Launch the game normally — through Steam or its launcher. BepInEx will initialize on first run, generating the necessary folder structure inside the BepInEx directory, including a plugins folder and log files.

5. Confirm It Worked

After the game loads and you exit, check BepInEx/LogOutput.log. If BepInEx loaded correctly, you'll see initialization entries at the top of that file. No log file, or an empty one, usually indicates a placement error.

6. Add Plugins

Drop any downloaded mod .dll files into BepInEx/plugins. Launch the game and they should load automatically.

IL2CPP Installation: What's Different

IL2CPP installs follow the same basic folder structure, but there's an important extra step: BepInEx must generate interop assemblies on first launch. This process can take several minutes and may look like the game is frozen — it isn't.

Additionally, IL2CPP mods require a compatible version of BepInEx built specifically for IL2CPP. Installing the wrong build (Mono build on an IL2CPP game, or vice versa) is one of the most common sources of install failure.

Common Variables That Affect Your Install

VariableWhy It Matters
Mono vs IL2CPPDetermines which BepInEx build you download
Windows vs Linux/macOSDifferent DLL files and launch configurations needed
Game versionBepInEx plugins are often version-specific
Antivirus softwareCan flag or delete winhttp.dll as a false positive
Game launcher typeSteam, Epic, and standalone launchers behave differently
Existing mod managersTools like Thunderstore Mod Manager or r2modman handle BepInEx automatically

⚙️ Some games have dedicated mod managers that install and configure BepInEx in the background, removing most of the manual steps above. If one exists for your game, it's worth knowing before going the manual route.

What Can Go Wrong

  • Game crashes on launch: Usually a mismatch between the BepInEx build and the game's backend or architecture
  • Plugins not loading: Files placed in the wrong subfolder, or plugin requires a dependency that isn't installed
  • Antivirus interference:winhttp.dll is commonly flagged — adding a folder exclusion for the game directory usually resolves this
  • Blank log file: BepInEx wasn't initialized, often meaning the files weren't placed in the true root folder

How Setup Complexity Scales With Your Situation

A straightforward Mono game on Windows with a mod manager is genuinely a one-click process for most users. A manual IL2CPP install on Linux for a game with no community tooling involves meaningfully more steps, troubleshooting familiarity, and awareness of how your specific game handles its launch sequence.

The version of BepInEx that works, the plugins that are compatible, and how much manual configuration is needed all depend heavily on which game you're targeting and how its developers have structured the build — details that vary more than any single guide can fully account for.