A drum kit is not a folder of sounds. It is a folder of sounds that survives being renamed, sorted, zipped and opened on a machine that has never seen it before. Six passes get you there: names, folders, level, format, root notes and paperwork.
Name the files before you touch the audio
Audio you cannot find again is audio you will not use, so fix the names while the files are still loose in one folder.
The pattern that survives contact with a sampler is <type>_<descriptor>_<root>_<bpm>.wav, so a short kick chopped at 140 BPM becomes kick_short_C2_140.wav. Keep it lowercase, because case-sensitive filesystems will happily keep Kick and kick as two different files. Use underscores instead of spaces, since a space turns into %20 on the way through a URL.
Variations take zero-padded numbers: snare_01, snare_02, up to snare_10. Without padding, snare_10 sorts ahead of snare_2 in every alphabetical list. Leave out final, v2, brackets and parentheses. They mean something to you today and nothing to whoever loads the kit tomorrow.
Never put /, # or : in a name. A slash is a directory separator, so it quietly creates a folder; a hash truncates the name in a URL; a colon breaks the copy on Windows. The type word goes first for one practical reason: sample browsers, DAW search fields and file managers all sort alphabetically, so the leading word is the only grouping a user gets without metadata. Everything named kick_ lands together, and the kit sorts itself.
The Sample Auto-Renamer applies one pattern across a folder in a single pass.
Folder layout a sampler can walk
Keep the tree two levels deep so one screen shows the whole kit. Three levels down, folder names vanish behind an ellipsis and the kit becomes a guessing game.
KitName/One-Shots/Kicks/,Snares/,Claps/,Hats/,Percussion/,Toms/,Cymbals/KitName/Loops/140_Cmin/— tempo first, then key, so the folder label matches the files insideKitName/README.txtandKitName/LICENSE.txtat the kit root
That is the whole structure. No Drums/Drums Final/ nesting, no New folder (2), no copy of the same hits under two names. Before you zip, strip __MACOSX and .DS_Store; both are invisible on the machine that made them and obvious junk on the machine that receives them.
One gain pass across the whole kit
Per-file fiddling is what ruins a kit. Set each hit by ear in isolation and the quiet ones get pushed up and the loud ones pulled down, and the kit loses the dynamics that made it feel like a kit.
Absolute peak, not loudness, is what a sampler user hears as consistency. Peak-normalise every one-shot to the same ceiling in one pass, for example -1 dBFS or -3 dBFS true peak, and stop there.
Loudness is the wrong measure for a 200 ms hit. A loudness meter measures in 400 ms blocks, so a one-shot shorter than that never fills one, and the reading swings with every variation of the same sound. Two kicks that feel identical can read several units apart and pull you into "fixing" something that was never broken.
Loops are the opposite case. Leave headroom, do not slam them to the same ceiling, and write the level you settled on in the README.
16-bit or 24-bit, and the sample rate
Each bit buys about 6.02 dB of theoretical dynamic range. Multiply it out: 16-bit is roughly 96 dB and 24-bit is roughly 144 dB. Drums almost never use the top of either figure, because the loudest moment in a hit is the transient and everything after it is decay.
What 24-bit actually buys you is headroom for the work that comes later — pitching a hit down an octave, layering it under another, riding a fader. That is a real reason to deliver 24-bit, and it is a different claim from "more audible detail".
Sample rate is simpler. 44.1 kHz covers frequencies up to 22.05 kHz, the Nyquist limit, which sits above the range of human hearing. Pick one rate for the whole kit, deliver everything at it, and state it in the README. Never mix rates inside one kit, because the sampler, the DAW import and the zip all handle the mismatch differently and none of them tell you.
If you convert down to 16-bit for a delivery format, dither on the way. The conversion is a truncation, and without dither the error lands as correlated distortion rather than a low noise floor.
Root notes and the octave-number trap
Only pitched one-shots need a root in the name: 808s, bass hits, tuned keys, tonal percussion, and anything you expect to be played across a keyboard. A kick or a snare has no root to declare, and putting _C2 on a snare misleads whoever loads it into a mapper that trusts the label.
The trap is the octave number. The same MIDI note is displayed with different octave numbers in different hosts, so _C2 in a filename is ambiguous on its own — one program's C2 is another program's C3. Do not guess which host uses which convention. Use the number-based fix instead: write the convention into the README, for example "C4 = MIDI note 60", or put the MIDI note number itself in the filename so there is nothing left to interpret.
Use the Root Note Finder to detect pitches across a batch of one-shots before you rename them, and check anything noisy by ear. Once the pitched hits are labelled, the WAV to SFZ mapper turns that folder into something playable.
The README, the licence, and the final check
The README has one job: answer the questions a buyer cannot ask you because they are offline. Cover the file count and the breakdown by type, the format, sample rate and bit depth, the root-note convention, which loops carry a tempo label, the kit version, and a contact address.
The licence file matters more than the README, and it is the one people skip. It is the only document that says what a buyer may do with the audio: use it in productions, not redistribute it as a pack. It also cannot grant rights you do not hold, so if a hit was cut from a commercial record, say so plainly rather than shipping a "royalty free" line.
Then open the finished ZIP and look at it as a stranger would. Every file present, every format and size as intended, the structure intact, the README numbers matching what is actually in the folders. The Sample Pack Inspector reads a pack ZIP back and flags the stray .aiff, the 48 kHz file and the empty folder that survived cleanup. Write the text with the Tracklist & Readme Generator so the counts come from the files rather than from memory.
Free tools for this job
Free browser tools that go with this post.
- Sample Auto-Renamer (vstchop.com) — Batch-rename one-shots with detected note + BPM patterns — ZIP out.
- WAV → SFZ Instrument Mapper (vstchop.com) — Drop one-shots, auto-detect their root notes, play the keyboard, export SFZ + DecentSampler.
- Tracklist & Readme Generator (kitdl.com) — Drop the pack's files — get a formatted tracklist + readme for stores and socials.
- Sample Pack Inspector (kitdl.com) — Drop a pack ZIP — see every file, format, size, and problem before you ship or buy.