Design your 96-well plate
in minutes, not hours

A free, browser-based tool for planning any 96-well plate experiment — dose-response, growth inhibition, phage infection, dye assays, and more. Paint wells directly, calculate volumes, undo mistakes, save your work, and export to CSV or PNG. No login. No install.

Launch Dilution Designer →
No login. No install. Runs entirely in your browser. Free forever.

Why I built this

I use 96-well plates regularly in a plate reader — dose-response assays, growth inhibition curves, dye uptake experiments, phage infection assays. Every time I sit down to design a new experiment, I end up doing the same mental gymnastics: how much stock do I need per well? how many wells do I have for this replicate count? does this volume even pipette reliably?

I was doing it in spreadsheets, then on paper, then in my head while already in the lab — and making small mistakes that cost me an afternoon re-running controls. I wanted something I could pull up on any computer in the lab, type in my numbers, and get a plate map and bench protocol back immediately.

I also change things constantly. A colleague asks to borrow a row for their control. My stock concentration changes. I want to add a replicate. I want to design a phage infection with different MOIs across the same plate. I needed a tool that lets me adjust things on the fly and see the effects instantly — without re-doing a spreadsheet from scratch.

Dilution Designer was built for exactly this: fast, flexible experiment planning for anyone who works with 96-well plates. No account, no subscription, no install — just open the page and start planning.

Two experiment modes

⚗️

Plasmid / Induction Mode

For concentration-gradient experiments: antibiotics, inducers (IPTG, doxycycline), small molecules, dyes, enzymes.

  • Set stock concentration and target concentrations
  • Volumes calculated per well (compound + culture)
  • Master mix table with 10% overage
  • Intermediate stock support for high concentrations
  • Pipettability warnings for tricky volumes
🦠

Phage Infection Mode

For MOI-based infection assays: phage dose-response, host range testing, plaque formation, infection efficiency.

  • Enter bacterial concentration and phage titer
  • Set target MOI per condition
  • Exact phage volume per well calculated automatically
  • Built-in MOI calculator for quick single-well checks
  • Serial dilution planner for prep from stock

What it does

🎨

Interactive plate painting

Four tools: Paint (assign a condition to any well), Replicate (drag horizontally or vertically to fill a run of wells with the same condition), Erase, and Exclude. Click or drag directly on the plate map.

Undo / Redo

Ctrl+Z undoes any paint, erase, exclude, or condition change — up to 30 steps back. Ctrl+Y (or Ctrl+Shift+Z) redoes. Toolbar buttons too. One drag stroke = one undo action, no matter how many wells you swept.

💾

Auto-save + JSON save/load

Your plate, conditions, and settings are automatically saved to the browser — reload the page and everything is exactly where you left it. Use 💾 Save to download a .json file and 📂 Load to restore it on any device.

🖼

Plate PNG export

Download a crisp, retina-quality image of your plate map — condition colors, well IDs, and a footer with experiment name and date. Ready to drop into a notebook, slide, or report.

🧬

Gen5-style plate layout

Large square wells (inspired by Biotek Gen5 software), well IDs visible in each cell (A1–H12), clear condition color fill. Each replicate is shown as its own independent well — never summed or collapsed.

🔍

Calculation breakdown tooltip

Hover any filled well to see a floating tooltip with the exact formula used — numbers plugged in. For plasmid mode: (target ÷ stock) × well vol = X µL. For phage mode: (MOI × cells × vol) ÷ titer = X µL. No more guessing how a volume was calculated.

⚠️

Input validation

Enter an impossible value — zero stock concentration, an intermediate that exceeds your stock, a negative titer — and you get a red border with an inline error immediately. Volume warnings appear when your planned pipetting would exceed the stock or culture you have available.

🔬

MOI calculator

Standalone calculator in the sidebar: enter bacterial concentration (CFU/mL), phage titer (PFU/mL), desired MOI, and infection volume — get the exact phage volume to add in µL.

💉

Serial dilution planner

Plan a dilution series from stock to working titer. Set your minimum pipettable volume — the planner enforces it at every step and outputs a complete recipe with transfer and diluent volumes.

🌙

Three UI themes

Day (bright, high-contrast), Night (dark mode), and Ambient (warm, low-contrast — easy on the eyes during long bench sessions). Toggle in the header. Your choice is remembered.

🎨

Fully customizable colors

Click any condition swatch or control dot to open a color picker. Choose from a quick palette or enter a custom hex code — the plate map updates live.

🚫

Exclude wells, rows, or columns

Click row/column buttons to exclude entire rows or columns. Or use the Exclude tool and drag directly on the plate to mark individual wells as off-limits. Excluded wells show a striped pattern and are omitted from all calculations.

🧫

Controls & blanks

Toggle negative controls, media blanks, culture blanks, and positive controls — each with their own color. Add custom controls for any use case.

📋

Master mix table

Automatically calculates master mix volumes with 10% overage so you don't run out mid-experiment. Groups by condition and lists all well IDs in each group.

📤

Export options

Download a JSON (full experiment state), CSV (full or minimal), or PNG plate image. Copy a plain-text protocol summary, print the full bench report, or print just the plate map.

🧪

Intermediate stock support

If your stock is too concentrated to pipette directly, switch to intermediate stock mode and get a recipe for making the right dilution first.

🏷️

Compound / reagent name

Name your compound or reagent — it appears throughout the protocol, legend, bench instructions, CSV header, and PNG footer so your exports are self-documenting.

Who it's for

Dilution Designer works for any assay that uses a 96-well plate. Some examples of where it's useful:

How to use it

Plasmid / induction experiments

  1. Select Plasmid mode from the mode toggle at the top of the header.
  2. Enter your compound name — appears throughout the protocol, legend, and all exports.
  3. Set your stock concentration and culture volume per well. The tool validates these in real time and warns you if something is off.
  4. Add conditions — click + Add condition, enter a target concentration, pick a color. Each condition appears in the palette.
  5. Paint the plate — select a condition, pick the Paint or Replicate tool, and click/drag wells to assign them. Hover any filled well to see the exact formula used to calculate its volumes.
  6. Toggle controls as needed — negative control, blanks, positive control, or add a custom one.
  7. Export — 💾 Save to JSON, download CSV, export a PNG image, or print the full protocol.

Phage infection experiments

  1. Select Phage mode from the mode toggle.
  2. Enter your bacterial concentration (CFU/mL), phage titer (PFU/mL), and infection volume per well (µL).
  3. Add MOI conditions — each condition represents a target MOI. The phage volume to add is calculated automatically per well.
  4. Use the serial dilution planner if you need to prepare working titer from a concentrated stock — set your minimum pipettable volume and get a step-by-step recipe.
  5. Paint the plate and export — same as Plasmid mode. The MOI panel below the plate shows per-condition totals.
Tips: Everything updates live — no submit button. Use Ctrl+Z to undo any mistake. Your experiment auto-saves to the browser and restores on reload. Use 💾 Save to download a .json file you can reload on any computer. Hover any filled well to see the calculation breakdown with your actual numbers.

Ready to plan your next experiment?

Free, browser-based, no account required. Open it on any computer in the lab.

Launch Dilution Designer →

Report a bug or request a feature

Found something broken? Have an idea for a new feature? Want support for a different assay type or plate format? I want to hear about it.

🐛 Report a bug

Something isn't calculating correctly, a button doesn't work, or the layout breaks? File a bug report on GitHub.

Report a bug →

💡 Request a feature

Want support for a new plate format, a different export option, or a specific assay workflow? Open a feature request.

Request a feature →

💬 General feedback

Questions, suggestions, or just want to say the tool saved you time? Open an issue on GitHub — all feedback is welcome.

Open GitHub Issues →

Source code is at github.com/mbaffour/dilution-designer