slab bench
overview
I’m making a bench from one of the white oak slabs I chainsaw-milled and later kiln-dried. The base design is TBD. This page tracks the finishing for now, since the slab is in hand and I have a stretch of decent weather coming.
I’m working in the carport, not a temp/humidity-controlled shop, so the finish plan has to fit that constraint. I’ll be picking my day for application instead of setting up an environment.
slab dimensions
| dimension | value |
|---|---|
| thickness | 48 mm |
| length | 1720 mm |
| width | 388 mm |
| total finished surface (both faces + all edges) | ~17 ft² (~1.55 m²) |
finishing
The plan was Rubio Monocoat Oil Plus 2C in Dark Oak. I switched to Real Milk Paint Dark Half because Rubio is fussy about temperature and humidity during application and the 5-day cure, and my carport is fussy about nothing. Tung oil cures by oxidation in air, no pot life, no catalyst clock, wide temperature and humidity ranges. Easy match for an uncontrolled environment.
Dark Half is a 50/50 blend of pure tung oil and citrus solvent (d-limonene from orange peels), pigmented to land roughly where Rubio’s Dark Oak would have. The finish lives in the wood, not on top of it.
sanding
Random-orbital sander with hook-and-loop discs. Through 150 grit on both faces, both end grains, and all four edges.
- 80 grit to knock down planer marks and any cup, until it read flat against a straightedge.
- 100 grit to remove the 80-grit scratch pattern.
- 120 grit to refine.
- 150 grit.
Between grits, I vacuumed the slab and the floor and wiped with a dry rag. I checked each step under a raking light at the edge of the slab and re-sanded any swirls or remaining mill marks before stepping up.
first coat (flood)
- Vacuumed sanding dust off everything. Wiped with a clean dry rag.
- Flooded the surface with Dark Half from the can, using a foam brush. Generous, kept it wet without puddling. End grain pulled it in fast and got more.
- Waited 40 minutes.
- Wiped the excess off with a clean cotton rag in firm passes, until the surface read uniformly oiled but not wet.
- Let it sit four hours.
the mistake
I sanded the slab to 220 grit between the first coat and the next, and kept sanding between the coats after that. This is wrong. Real Milk Paint says so directly - don’t sand between coats of tung oil. Partially-cured oil doesn’t abrade like a film finish. It gums up, smears across the surface, loads the disc, and turns into a hazy slurry of oil and sawdust that obscures the grain underneath.
I kept going anyway. Second coat with 220 grit beforehand, then 400, then 600. By the end the slab looked like it had been wiped with mud. Pigment streaks, no grain definition, a soft uneven film instead of the deep clear figure I’d built up.
the recovery
Citrus solvent dissolves uncured and partly-cured tung oil. It’s also the thinner inside Dark Half itself, so I knew it was compatible with whatever was on the slab. I doused the surface with straight citrus solvent (d-limonene degreaser) and worked it with cotton rags until the goop lifted off. It took a lot of rubbing, and I had to keep at it before the surface layers fully cured - once tung oil is hard, citrus solvent doesn’t lift it cleanly anymore.
The deep tung oil from the first coat survived. It had penetrated into the grain and cured down there well before the surface mess started up top. End state: the slab is back to bare-feeling wood, sanded to 150 grit, with Dark Half permanently saturating the fibers below. The grain reads clean, the pigment that absorbed into the open pores is still in place, and the slab is darker than raw white oak with no streaky topcoat.
the plan from here
I’m rebuilding the finish properly. Real Milk Paint’s directions for their thinned tung oil products call for 3 to 5 thin wipe-on coats for everyday-use furniture, no abrasion between coats. The wood is already saturated below the surface from the original first coat, so subsequent coats will absorb less and build the surface sheen more than they would on raw wood.
After the strip, I let the slab sit overnight in the carport so any residual citrus solvent could flash off. I did not sand again before recoating. The strip left the surface in a good state, and the pigment that absorbed into the open pores of the wood is sitting just below the surface - any sanding now would scrub off some of that pigment and lighten the slab unevenly. Raised grain from the solvent wipe-down will lay back down under the next coat’s penetrate-and-wipe pass on its own.
Then, for each coat:
- Apply Dark Half thin with a lint-free cotton rag (an old undershirt works), not a foam brush. Just enough to wet the surface evenly, no flood.
- Let it soak 15 to 30 minutes.
- Wipe all excess off with a clean dry cotton rag. The surface should feel dry to the touch when I’m done, not tacky.
- Wait 24 hours before the next coat. Real Milk Paint allows as little as 2 to 3 hours between coats of their solvent-thinned blends, but overnight is safer and there’s no rush.
- Repeat until I’ve built three more coats on top of the existing first-coat penetration.
No sanding between coats. Not orbital, not by hand, not steel wool. If a coat dries with a nib or a speck, I’ll dampen a rag with a little Dark Half on the next pass and the irregularity will dissolve back into the new coat.
After the final coat, the slab cures for 30 days. Tung oil is touchable in a day or two but doesn’t reach full hardness for about a month. Once cured, I’ll finish with a paste wax topcoat - Real Milk Paint’s Soft Wax is the matched pairing, or any beeswax-and-carnauba furniture wax (Liberon Black Bison, Briwax) does the same job. Wax on cured tung oil gives a smooth hand-feel, adds abrasion protection for a surface that gets sat on, and brings the satin sheen up a touch without going glossy. It’s sacrificial and will need a refresh every couple of years.
oily rag disposal
Tung oil rags will spontaneously combust. They cure by oxidation, oxidation produces heat, heat speeds the oxidation, you get a runaway in a few hours and a fire in the rag pile.
Everyone seems to have various disposal methods involving the trash, but this seems cumbersome, and I put them in the fire pit and burn them.
base
The base is two trapezoidal end pieces connected by a single low stretcher, unpainted. The whole thing is built from rectangular tube steel, 1.5“ x 0.75“, 0.125“ wall. After welding it gets ground clean, brought to a uniform satin with scotch-brite, degreased, and clear-coated so the bright steel stays bright.
The slab is 1720 mm long and the bench seats two adults comfortably. I’m targeting a finished height of 18“ (457 mm) at the top of the slab, which is on the tall side for a bench and right for slipping up to a 30“ table. Slab is 48 mm thick, so the steel frame stands 409 mm.
design
| dimension | value |
|---|---|
| tube section | 1.5" x 0.75", 0.125" wall |
| finished bench height (top of slab to floor) | 457 mm (18") |
| steel frame height | 409 mm |
| trapezoid top tube length | 280 mm |
| trapezoid bottom tube length | 360 mm |
| trapezoid splay angle | ~5.6° per side |
| trapezoid inset from each slab end | 250 mm |
| stretcher length | 1220 mm |
| slab overhang past each trapezoid (lateral) | 54 mm per side |
| leveling feet | M8 threaded inserts, 4 corners total |
The trapezoids splay in the short axis of the bench (looking at the bench from the end, you see an A shape). The wider footprint at the floor handles side-to-side lean without any cross-bracing. Long-axis stability comes from the slab itself plus the single stretcher running between the trapezoid bottoms.
The stretcher rides low, tucked along the floor, so it doesn’t get in the way of feet sliding under the bench when someone sits down.
Slab attaches via four steel tabs, two welded to the inside face of each top tube. Tabs project up against the underside of the slab. M8 bolts pass up through the tabs and thread into M8 inserts set into the slab. The holes in the tabs are slotted across the slab’s grain to allow seasonal movement: the inserts are fixed in the wood, but the slots let the slab shift over the bolts as it expands and contracts. White oak across a 388 mm wide slab can move 3 to 5 mm with the season - if I bolt it rigid in both axes, the slab cracks or the inserts tear out.
I’m using steel knife-thread inserts (the kind with aggressive external wood threads and an internal hex drive), not brass press-ins. Brass strips out of oak under load. The inserts seat flush in the underside of the slab and are reversible: I can lift the base off any time.
cuts and welds
Cuts are all done on a chop saw with a metal-cutting blade.
- Top tubes: 280 mm long, ends cut square.
- Bottom tubes: 360 mm long, ends cut square.
- Legs: cut at the splay angle (~5.6°) at both ends, so the leg sits flush against the top and bottom tubes when assembled. Mitered corners would look cleaner from the side but they’re harder to weld up tight and the flat-against-flat joint is more forgiving.
- Stretcher: 1220 mm, ends cut square, weld to the inside face of the trapezoid bottom tubes.
- Tabs: cut from 1/8“ flat bar, ~60 mm x 40 mm, one per attachment point (four total). Each tab gets a single M8 clearance slot, drilled 9 mm round then filed out to a ~14 mm long slot. The slot runs across the slab’s grain direction once the tab is welded in place.
I tack-weld both trapezoids on a flat surface (the concrete slab of the carport works, with the tubes shimmed level). Once everything is square, I run full welds at each joint. MIG is what I have - the welds are heavier than TIG but they grind out fine. After welding, I check the trapezoids are still flat and not pulled by the heat.
Threaded inserts for the leveling feet: drill 9 mm holes in the underside of the bottom tubes at each corner, weld M8 nuts inside, then thread in M8 leveling feet with plastic bases. The plastic keeps the steel off the concrete and lets me dial out any rocking.
finishing the steel
The goal is a bright satin finish that stays bright. Raw mild steel flash-rusts fast in humid air, especially in a carport, so the final sand and the first poly coat have to happen in the same session - within an hour or two, not the next morning.
- Grind all welds flush with a flap disc.
- Strip mill scale from every surface. 60-grit flap disc to start, then 120.
- Final sand with maroon scotch-brite (roughly 320-grit equivalent), pulled in long single-direction strokes along the length of each tube so the grain reads consistent.
- Wipe all surfaces down with acetone on a lint-free rag. Same drill as the slab dust-removal step. Nitrile gloves on, and they stay on from this point.
- Immediately spray three thin coats of clear oil-based polyurethane. I’m using Rust-Oleum Triple Thick Polyurethane in clear gloss from the can.
- Light scuff with 320 grit between coats once each coat is dry to the touch (about 2 hours).
- After the third coat, let it cure 24 hours before assembling against the slab.
Oil-based polyurethane has a slight amber tint that warms the steel a touch. With the Dark Oak slab on top, the two finishes read together. Water-based clear stays neutral but is less durable for something that gets scuffed and sat on, so I’m going oil-based.
A note on flash rust: between scotch-brite and acetone wipe, I don’t touch the steel with bare hands. Fingerprints leave salts and oils that bloom under the clear coat within a week. Gloves the whole time, and if I have to set the frame down between steps, it goes on a clean piece of cardboard, not the concrete.
assembly
The frame and the slab get joined after both finishes are fully cured (5 days for the Rubio, 24 hours for the poly).
- Flip the slab upside down on a moving blanket.
- Set the frame on the underside, positioned with 250 mm of slab overhang at each end and centered side-to-side.
- Mark the insert locations through the center of each tab slot with a fine pencil or scribe.
- Lift the frame off. At each marked point, drill the pilot hole spec’d for the M8 insert (typically around 10 mm for hardwood knife-thread inserts, but follow the insert manufacturer’s chart). Depth set with a tape flag on the bit so I don’t punch through the 48 mm slab. Aim for ~30 mm depth.
- Drive the inserts in with the recommended tool (usually an internal hex on a long allen key, or an insert driver in a drill press). Hardwood needs steady downward pressure to start the threads. The insert seats flush with the slab’s underside.
- Set the frame back in position. Drop an M8 socket head cap screw through each tab slot (with a flat washer under the head) and thread it into the insert by hand. Bolts ~25 mm long, so they bottom in the insert with plenty of thread engagement and don’t poke through to the top of the slab.
- Snug each bolt with an allen key. Not gorilla-tight - the slot needs to be able to slide under the washer as the slab moves seasonally.
- Flip the bench upright, level it with the M8 feet on whatever floor it lands on.
If I ever need to take the bench apart for moving, it’s four bolts and it comes apart clean.
home | about | github | mastodon
epoch
1780589267