---
title: "How to install SourceMod plugins on your Counter-Strike: Source server"
description: "Install, enable, disable and troubleshoot SourceMod plugins and extensions on Counter-Strike: Source."
url: "https://www.gameserverkings.com/knowledge-base/counter-strike-source/how-to-install-sourcemod-plugins/"
category: "Counter-Strike: Source"
category_url: "https://www.gameserverkings.com/knowledge-base/counter-strike-source/"
published: "2026-08-07T08:25:09.323Z"
updated: "2026-08-07T08:32:30.460Z"
source_format: "markdown"
site: "GameServerKings"
---

# How to install SourceMod plugins on your Counter-Strike: Source server

Plugins are the reason most people still run a Counter-Strike: Source server. Because CS:S is a **Source 1** game, SourceMod runs on it natively, and two decades of community plugins run on SourceMod.

This guide covers the directory layout, enabling the plugins SourceMod already ships, installing new ones, and diagnosing the ones that refuse to load.

You need SourceMod installed first — see [How to add admins to a Counter-Strike: Source server with SourceMod](/knowledge-base/counter-strike-source/how-to-add-admins-with-sourcemod/).

## Where do SourceMod plugins go?

Everything below lives under `cstrike/addons/sourcemod/`.

| Directory | What it holds |
|---|---|
| `plugins` | All `.smx` files here load automatically when SourceMod starts |
| `plugins/disabled` | Plugins here are **not** loaded — this is how you disable one |
| `configs` | Configuration files for SourceMod and its plugins |
| `extensions` | Extensions, which are more powerful than plugins and load only when required |
| `gamedata` | Offsets and signatures the engine needs; SourceMod auto-updates these |
| `translations` | Translation files, which some plugins require you to copy in |
| `scripting` | Plugin source (`.sp`) and the compiler — not needed to *run* anything |
| `logs` | Where errors go, and the first place to look when something breaks |
| `data` | Internal plugin data |
| `bin` | SourceMod's own binaries — leave alone |

The short version: **`.smx` files go in `plugins`**. Plugins are also reloaded on map change if their file has changed.

> [!TIP] Install the `.sp` alongside the `.smx`
> You do not need the source file for a plugin to run, but AlliedModders recommend installing both. When a plugin breaks after a game update, having the source on the server is the difference between recompiling it and waiting for the author.

## Which plugins does SourceMod already include?

A good number of the things people go looking for are already installed. These load by default:

| Plugin | Purpose |
|---|---|
| `admin-flatfile` | Loads admins from the admin config files |
| `adminmenu` | Provides the admin menu API and core features |
| `adminhelp` | Provides `sm_help` |
| `basebans` | Basic banning commands and menu options |
| `basecommands` | Map changing, kicking, cvar changing |
| `basechat` | Say-chat, centre-say and private message commands |
| `basecomm` | Gag and mute controls |
| `basetriggers` | Automated replies to "nextmap", "thetime" and "timeleft" |
| `basevotes` | Basic voting commands |
| `playercommands` | `sm_slap`, `sm_slay` and `sm_rename` |
| `funcommands` | Fun commands such as slapping and beacons |
| `funvotes` | Votes based on the fun commands |
| `antiflood` | Prevents chat spam |
| `nextmap` | Alters and reports the effective map cycle |
| `reservedslots` | Reserved slots for admins and privileged players |
| `clientprefs` | Client settings interface (`sm_cookies`, `sm_settings`) |
| `sounds` | Adds `sm_play` |

And these ship **disabled**, in `plugins/disabled`, waiting to be moved out:

| Plugin | Purpose |
|---|---|
| `mapchooser` | Automated end-of-map map voting. Disable `randomcycle` if you use it |
| `randomcycle` | Randomises the map cycle. Disable `mapchooser` if you use it |
| `rockthevote` | Player-initiated map votes |
| `admin-sql-prefetch` | Loads admins from SQL in bulk each map change |
| `admin-sql-threaded` | Loads admins from SQL as each admin connects |

> [!WARNING] The two SQL admin plugins are mutually exclusive
> If you enable `admin-sql-prefetch`, `admin-sql-threaded` must be disabled, and vice versa. The same either/or applies to `mapchooser` and `randomcycle` — they both want to decide the next map.

## How do I enable a plugin that came with SourceMod?

Using `mapchooser` as the example:

1. Copy `plugins/disabled/mapchooser.smx` to `plugins/mapchooser.smx`.
2. Either run `sm plugins load mapchooser` in the server console, or change the map.
3. Confirm it worked with `sm plugins list`.

If the plugin has cvars, loading it once generates its config file in `cfg/sourcemod`. That generated file is where you change its settings — not the plugin itself.

## How do I install a new SourceMod plugin?

For a simple plugin that ships a binary and its source:

1. Copy the `.smx` file into `addons/sourcemod/plugins`.
2. Copy the `.sp` file into `addons/sourcemod/scripting`.
3. Change the map, or run `sm plugins load <name>`.
4. Confirm with `sm plugins list`.

More complex plugins also ship translations or gamedata. Well-packaged ones give you a zip whose folder structure already matches SourceMod's, so you can copy the whole thing into the `sourcemod` folder and let the paths line up.

> [!IMPORTANT] Always follow the plugin's own instructions
> This is AlliedModders' own advice and it is worth repeating. Plugins vary in what they need — translations, gamedata, a required extension, a config file. The plugin's release thread is authoritative for that plugin; this guide is only authoritative for the mechanism.

### Dependencies

Plugins depending on other plugins is rare. Plugins depending on an **extension** is common — extensions provide capabilities plugins cannot otherwise reach. Any dependency has to be noted in the plugin's description, so read it before assuming a failed load is a bug.

## Which console commands manage plugins?

Run these in the server console, or through your panel's Console tab.

| Command | What it does |
|---|---|
| `sm version` | Prints the SourceMod version |
| `sm plugins list` | Lists loaded plugins |
| `sm plugins load <name>` | Loads a plugin |
| `sm plugins unload <name>` | Unloads a plugin |
| `sm plugins reload <id>` | Reloads a plugin by list ID |
| `sm plugins refresh` | Refreshes the plugin list from disk |
| `sm plugins info <id>` | Shows detail for one plugin, including why it failed |
| `sm exts list` | Lists extensions |
| `sm exts load <name>` | Loads an extension |

## Why is my plugin not loading?

Change the map after installing, then run `sm plugins list` in the **server** console. SourceMod is a server-side addon, so the client console will not tell you anything useful here.

**If the plugin is not listed at all**, it is not installed correctly — the compiled `.smx` is not in the `plugins` directory.

**If it is listed with a `<Failed>` prefix**, run `sm plugins info <plugin id>` using the number from the list. AlliedModders document the common causes:

| Error | Cause |
|---|---|
| `Could not find translation file` | Translation files were not uploaded, or went to the wrong directory |
| `Native 'xyz' was not found` or `Required extension "xyz" file("xyz.ext") not running` | A required extension is missing or out of date. Check `sm exts list` against the current version on AlliedModders |
| `Wrong game` | The plugin targets a different game. Disable it to clear the error |

The `logs` directory holds the full picture. When asking for help, copy the actual log lines rather than your interpretation of them.

## How do I install an extension?

Extensions install like plugins — copy the file into `addons/sourcemod/extensions`. They may also need gamedata and translations.

The wrinkle is filenames. Some extensions ship one build for every Source game. Others ship one per engine, named `[extension].ext.[Metamod API version].[engine string].[extension]`.

**For Counter-Strike: Source the engine string is `ep2v`.** CS:S shares that Source 2009 build with Team Fortress 2, Day of Defeat: Source, Half-Life 2: Deathmatch and Garry's Mod. So the SDKTools build you want on CS:S is `sdktools.ext.2.ep2v.dll` on Windows, or the matching `.so` on Linux — not `ep2`, and not the plain `sdktools.ext.dll`.

Extensions load only when a plugin requires them, so an unused extension will not appear in `sm exts list` at all. To force one to always load, create an empty file next to it named after the extension with an `.autoload` suffix:

``` title="Forcing an extension to load"
extensions/sdkhooks.ext.2.ep2v.dll      <- the extension
extensions/sdkhooks.autoload            <- empty file, forces it to load
```

> [!CAUTION] Never overwrite a running extension
> You cannot update an extension while it is loaded. Unload it first with `sm unload <extensionname>`, or stop the server. Overwriting a live extension will most likely **crash a Linux server**, and on Windows the file will simply be locked.

## FAQ

### Where do I put .smx files on a Counter-Strike: Source server?

`cstrike/addons/sourcemod/plugins`. Every `.smx` in that directory loads automatically when SourceMod starts, and reloads on map change if the file has changed.

### How do I disable a SourceMod plugin without deleting it?

Move it into `addons/sourcemod/plugins/disabled`. Plugins in that sub-folder are not loaded. Moving it back out re-enables it. This is also how the bundled extras such as `mapchooser` and `rockthevote` ship.

### How do I check whether a plugin installed correctly?

Change the map, then run `sm plugins list` in the server console. Not listed means it is not installed in the right place. Listed with `<Failed>` means it loaded and errored — run `sm plugins info <id>` for the reason.

### Which SourceMod extension build does Counter-Strike: Source need?

The `ep2v` build, which is the Source 2009 engine shared with TF2, Day of Defeat: Source and Half-Life 2: Deathmatch. Picking `ep2` or a generic build instead is a common cause of `Native 'xyz' was not found` errors.

### Can I install plugins without restarting the server?

Yes. `sm plugins load <name>` loads a newly copied plugin immediately, and a map change picks up anything new or modified. Extensions are the exception — you cannot replace one that is currently loaded.

### Do SourceMod plugins work on Counter-Strike 2?

No. SourceMod does not run on Counter-Strike 2 at all — AlliedModders list it as Unsupported — so no SourceMod plugin, bundled or community, applies there. This is a genuine reason communities keep running Counter-Strike: Source. If you want a server where this ecosystem works, that is [Counter-Strike: Source server hosting](/games/counter-strike-source/).

### Where do plugin config files appear?

In `cfg/sourcemod`, generated the first time a plugin with cvars is loaded. Edit the generated file rather than looking for settings inside the plugin.

## What to read next

- [Getting started with your Counter-Strike: Source server](/knowledge-base/counter-strike-source/getting-started-with-your-server/) — first boot, ports and connecting
- [Counter-Strike: Source server.cfg configuration](/knowledge-base/counter-strike-source/configuration-overview/) — where each config file lives and what executes when
- [How to add admins to a Counter-Strike: Source server with SourceMod](/knowledge-base/counter-strike-source/how-to-add-admins-with-sourcemod/) — admin flags, immunity and the full command set
- [How to add and rotate maps on a Counter-Strike: Source server](/knowledge-base/counter-strike-source/how-to-add-and-rotate-maps/) — map cycles, FastDL and map voting

---

Made with 💜 by GameServerKings
