A carbon-fed U-path denitrator after Donovan Joannes's design, built for this tank's 750 L system. Water runs down an aerobic column where dosed carbon burns off dissolved oxygen, crosses at the base, then up an anaerobic column where nitrate is reduced and leaves as nitrogen gas. Fed by its own channel on the same reef system's SmartDoser, over a stepper-driven Kamoer peristaltic pump -- sits alongside the tank-wide vinegar dosing already described on the Acropora page, not replacing it.
Design figures for this build
Feed flow
Carbon
Residence
N₂ produced
60 mL/min (11.5% of daily turnover, ~86 L/day)
5–15 mL/day, 8% vinegar at the inlet
~3.1 h (~11.0 L void volume at 60 mL/min)
~300 mL/day at 1.5 g NO₃/day reduced
Plumbing
The outlet sits slightly below the inlet level, so the small head difference drives the U once the pump has filled the first column. Donovan's original uses a small aquarium pump with an adjustable valve at this point; a peristaltic does the same job at a rate that doesn't sag as the media loads. The dashed circuit is service only: V2 drives a forward flush, V3 a backflush, and the feed, the flush supply and the drain all meet in one tee stack above the aerobic cap -- which is what makes the inlet end usable as the backflush exit. At the base, building the crossover from tees rather than bends leaves a capped stub under each column: no flow passes through them so they add nothing to residence, but valved they become the two lowest drain points and keep settled solids out of the beds. The crossover itself carries no media -- it's open pipe, shown unfilled above.
After Donovan Joannes's Nitrate Destroyer. Media grading, the aerobic/anaerobic split and the inlet/outlet level offset follow his design; flow, carbon and gas figures are worked for this 750 L system.
Flushing a clog
The service manifold tees off the pressure side of the return pump through a gate valve. With V2 and V3 shut it is a dead leg, so normal running loses nothing; opening either one puts return pressure across the reactor, throttled back to something the beds survive.
The two directions are not redundant -- each one lifts the bed the other packs down:
Forward flush (V2) runs down the aerobic leg and up the anaerobic, fluidising the coral and pumice.
Backflush (V3) runs down the anaerobic leg and up the aerobic, fluidising the bio-media -- which is where detritus actually collects, because it is the first thing the water meets.
Valve positions by mode
Mode
V1 feed
V2 fwd
V3 back
V4 outlet
V5 top
V6 aer. stub
V7 anaer. stub
3-way
Run
open
shut
shut
open
shut
shut
shut
sump
Forward flush
shut
open
shut
open
shut
shut
shut
waste
Backflush
shut
shut
open
shut
open
shut
shut
—
Sludge drain
shut
shut
shut
shut
open
open
open
—
Fill & vent
open
shut
shut
open
crack
shut
shut
waste
V5 earns its place three times over: it is the backflush exit, the air bleed when first filling, and the air inlet without which the stub drains will not run. Drain one stub at a time and smell each separately -- a sulfide note from the anaerobic side is the earliest warning the reactor has gone too far, well before a test kit shows anything.
Doing it
Set the gate valve once, by trial, to 2–4 L/min -- roughly 40–80× the feed rate. That lifts a packed bed; much more ejects media into the bucket.
Purge the manifold first. Open V2 and V5 with V1 shut and the stagnant water in the dead leg goes straight up and out to the bucket without crossing a bed.
30–60 seconds per direction, 1–4 L to waste. Watch the bucket: stop when it runs clear.
Reopen V1 last and confirm the air gap is running before you walk away.
What it costs
It sets the biology back. Flush water is oxygenated, nitrate-rich tank water. A flush aerates the anaerobic leg and stalls denitrification -- expect nitrate to flatten for several days and then resume. Flush when throughput genuinely drops, never on a schedule.
It re-sorts the grading. The beds are deliberately coarse-to-fine in the direction of flow. A hard flush shuffles that. Use the lowest flow that restores flow.
A peristaltic hides the clog. Positive displacement means flow does not sag as the bed loads -- pressure rises instead, until a fitting or the tube gives. So fit a cheap gauge or a relief tee on the feed line; do not expect to notice a clog as a flow drop.
Media needs retaining. A coarse screen under each top cap and a strainer on the outlet port, or a flush carries media out of the column.
A capped tee stub is a sulfide trap; a valved one is an asset. The dead legs below the crossover hold stagnant, anoxic, carbon-rich water with organics settling into it -- and with no flow there is no nitrate resupply, so once the nitrate in that pocket is used up the bacteria move on to sulfate. Fit a valve, not a plain cap, and drain them to a bucket on the same schedule you check the effluent. Keep them short: 10cm is enough to catch solids, and nothing above that earns its keep.
Check valves matter here. One on the vinegar line and one on the manifold riser. Without them, backflush pressure pushes into the dosing head, and reactor water -- low ORP, possibly sulfidic -- can siphon into the return line when the pump stops.
What happens along the path
Indicative, not measured. The shape is what matters: nitrate barely moves until oxygen is gone, then falls through the second leg -- and must still be above zero at the outlet.
Bacteria use oxygen first because it yields more energy than nitrate. So the aerobic leg isn't wasted volume -- it is what makes the anaerobic leg anaerobic, by spending carbon to strip the O₂ the incoming water carries.
That is also why carbon enters once, at the top. It has two jobs in sequence, and the same dose does both.
The outlet reading is the control signal for the whole reactor. Nitrate still present at the outlet means the bed ran out of carbon before it ran out of nitrate -- which is the safe ordering. Nitrate at zero means carbon is left over with nothing to reduce, and sulfate is next in line.
At 1.0 g NO₃/day production and a 2 ppm effluent. Going from 15 to 10 ppm costs 35 mL/min; going from 10 to 5 costs another 144.
tank NO₃ ≈ effluent + (production ÷ flow)
Flow
Settles at
Residence
Carbon
52 mL/min
~15 ppm
3.5 h
~14 mL/d
87 mL/min
~10 ppm
2.1 h
~22 mL/d
174 mL/min
~6 ppm
63 min
~33 mL/d
231 mL/min
~5 ppm
48 min
~39 mL/d
The pump is never the constraint -- 231 mL/min is 58% of the Kamoer's range. Residence time is. At 5 ppm the bed has 48 minutes to strip oxygen and reach a 2 ppm effluent, against the ~3.5 hours this geometry gives at the design flow. If it can't, removal per pass drops and you need yet more flow, which shortens residence again. More volume is the only way out of that spiral -- see Sizing below.
Carbon nearly triples too, and mostly for oxygen rather than nitrate: at 231 mL/min roughly 27 of the 39 mL goes on deoxygenating 333 L/day.
Don't pick a target yet. Every row rests on that 1.0 g/day production figure, which is inferred rather than measured. Run Donovan's 52 mL/min for a fortnight: flow × (influent − effluent) gives the real removal rate, and the tank's trend against it gives production. Then the target is arithmetic.
Sizing
The figure that decides everything is easy to get wrong, and an earlier version of this page did: residence time is the water volume divided by the flow, not the pipe volume. Media fills roughly half the tube in each column -- but the base crossover between them carries no media at all, confirmed on the real build. So a system holding 19.4L of gravel, rings and open pipe holds about 11L of water, not the roughly 10L a uniform 50% estimate across the whole bulk would suggest. The empty crossover holds more water per litre of bulk than a packed column does, not less.
For 100mm pipe (110mm OD, 103.6mm bore) in the columns, with the 0.3m base crossover counted separately at 100% void:
Two towers
Bulk
Water
At 52 mL/min (~15 ppm)
At 87 mL/min (~10 ppm)
1.0 m each
19.4 L
11.0 L
3.5 h
2.1 h
1.25 m each
23.6 L
13.1 L
4.2 h
2.5 h
1.5 m each
27.8 L
15.2 L
4.9 h
2.9 h
The 0.3m crossover is worth 2.5L of bulk, about 13% of a 1m build -- and since none of it is packed, all 2.5L is water, not half of it. It is still horizontal, and an empty horizontal pipe still channels in its own way: flow takes the shortest path across rather than using the full cross-section, so treat the crossover's contact value as near zero even though its hydraulic volume counts in full. It is also why the base drain sits at that exact point.
The two numbers pull against each other
Equilibrium is set by flow; residence is set by volume. Raising flow to settle the tank lower shortens the contact time that makes the settling possible, so a given volume quietly fixes how low the tank can go.
1 m towers reach ~15 ppm comfortably -- 3.5 h at the design flow, squarely inside the 1–4 h band carbon-fed denitrators work in.
10 ppm asks for 87 mL/min, leaving 2.1 h. Workable, with a bit more margin than the open-crossover correction first suggested. An extra 25cm per tower adds further headroom and changes nothing else about the build.
Below ~6 ppm the geometry runs out before the pump does -- under an hour of contact to strip oxygen and reduce nitrate. More flow then removes less per pass, which is the spiral that only more volume escapes.
If you can choose the pipe
Volume goes with the square of the bore, so diameter buys far more than height per euro and per metre of headroom. Same 1m towers, same shelf:
Pipe (OD)
Bore
Bulk, 2 towers
At 52 mL/min
At 87 mL/min
L/D
110 mm
103.6 mm
16.9 L
2.7 h
1.6 h
9.7
125 mm
118.6 mm
22.1 L
3.5 h
2.1 h
8.4
160 mm
152.0 mm
36.3 L
5.8 h
3.5 h
6.6
Keep the length-to-diameter ratio above about 5. Below that a packed bed starts channelling and the extra volume stops earning its keep -- which is the same reason four towers in series is the wrong way to add capacity. A four-leg path puts a downflow leg deep in the anaerobic zone, where the nitrogen it generates would rise against the flow. If you need more than two legs, run two U-paths in parallel, each with its own balancing valve, so every gas-producing leg still runs upward.
Packing is worth a whole tower
Void fraction moves residence as much as half a metre of pipe does, and it costs nothing to get right. The crossover's 2.5L is fixed regardless of packing choice -- it isn't packed at all -- so it's added on top of whichever column void fraction you end up with, not scaled by it.
Column media
Void
Column water
+ crossover (2.5L, fixed)
At 52 mL/min
Dense or tamped down
40%
6.8 L
9.3 L
3.0 h
Mixed, typical
50%
8.5 L
11.0 L
3.5 h
Open bio-balls and rings
65%
11.0 L
13.5 L
4.3 h
Donovan's media schedule already leans open in the aerobic leg -- large rings and balls rather than fines -- because that leg only has to burn oxygen. Follow it, pour the media in loosely and let it settle, and resist both tamping and anything sand-like.
Operating figures
750 L system, NO₃ 42 ppm → ~10 ppm target.
Parameter
Value
Basis
Feed flow
60 mL/min
confirmed by direct timed-volume measurement under real load, not bench spec
Start-up flow, week 1
30 mL/min
~5 mL per 10 s, then work up
Carbon dose
5–15 mL/day
lean on purpose -- full reduction would take ~30 mL
Media volume
~19 L
2 × 1 m of 100 mm, plus a 0.3 m crossover (crossover carries no media)
Residence time
~3.1 h
~11.0 L of water ÷ 60 mL/min
Nitrogen produced
~300 mL/day
at 1.5 g NO₃/day reduced
Driver
speed 110 @ mstep 256
SERVO42C → 64.45 RPM, measured directly -- see note below
The pump's own bench spec doesn't hold under real load. Measured mL/rev under this build's actual suction and discharge resistance came out speed-dependent -- 0.885 mL/rev at low speed, rising to 1.054 at high speed -- not the constant 1.422 mL/rev a free-discharge bench test gave. Lower speed delivering less per revolution than higher speed is backwards from the usual assumption that slower rotation means more complete tube recovery; it was real and repeatable across multiple timed runs, not measurement noise. Trust a timed-volume measurement against the actual installed system over any catalogue mL/rev figure.
Rules the drawing encodes
The gas-producing leg runs upward. At 52 mL/min the water moves about 0.011 cm/s while bubbles rise at ~20 cm/s, so no practical flow carries gas downward. Nitrogen is only made in the anaerobic leg, and that leg exits at its top.
No high points in the return. Gas collects at any peak until it forms an air lock that stops flow -- and stopped flow is the hydrogen sulfide condition.
Keep carbon lean. The bed must run out of carbon before it runs out of nitrate. That ordering is the entire safety margin.
Positive displacement on the feed. As the media loads, a valve-throttled centrifugal pump's flow falls -- drifting toward the hazard. A peristaltic holds its rate.
Flush before returning effluent. After any stoppage, send the first volume to waste rather than into the display.
Commissioning
Fill, purge air, and run water only with no carbon. Confirm flow by timing output into a measuring cylinder -- that measured figure is what you set the pump by from then on.
Day 3: begin carbon at 5 mL/day at the inlet, seeding bacteria at the same time. Leave the display vinegar dose running unchanged; the tower removes little until it colonises.
Watch for nitrogen bubbles at the air gap. Their appearance is the first evidence of denitrification, usually one to three weeks in.
Test effluent nitrate. It should fall below tank level but stay above zero. If it reaches zero, raise flow before cutting carbon.
Only once the tower demonstrably works, taper the display vinegar dose and move that carbon to the inlet.
Two side effects to anticipate
Both arrive before the nitrate drop does.
Alkalinity rises
Denitrification returns about 3.57 g CaCO₃ per g NO₃-N reduced -- intrinsic to the reduction reaction itself, not dependent on the media it runs over. At meaningful removal that offsets a real fraction of this system's 0.44 dKH/day demand, so the NaOH dose has to come down. Test alkalinity every two or three days once bubbles appear. This build runs ceramic rings throughout rather than Donovan's original crushed coral, so expect somewhat less than his design shows -- ceramic adds none of the slow CaCO₃ dissolution a coral-media build gets on top of the reaction's own output, just the reaction-driven portion above.
Phosphate falls
Biofilm growth consumes phosphorus. With PO₃ already near the 0.05 ppm floor, a stall will look like the reactor failing rather than a nutrient running out. If phosphate bottoms out, denitrification stops -- raise the phosphate dose before chasing anything else.
Same ownership stance as the rest of this site's build writeups: this is my own tank, my own hardware, run and modified at my own risk. If any of this is useful background for your own build, the same applies to you.