What This App Does
Tally Wacker is a casing run tally tool for surface, intermediate, and production strings. It tracks every joint and accessory from shoe to surface, calculates running depths, monitors stickup, and generates a printable field tally for the tool pusher and company man to sign. Works fully offline — no internet required after first load.
Workflow — Step by Step
1
Select String Tab — Pick the casing string you're running: Surface, Int. Casing, Int. 2, Prod. Casing, or Liner. Each tab is independent with its own items, undo history, and auto-save.
2
Set Well Name & TD — Enter the well name (required for auto-save) and total depth in the header. TD drives all running depth calculations from shoe to surface.
3
Import Tally — Click 📥 Tally Import and select your tally sheet (.xlsx). The importer auto-detects format (Wendigo/Latshaw or Dels/Digital), well name, grade, thread, OD, and weight category. For dual-weight strings it detects the 47#→40# transition automatically. If any spec can't be read from the file, a prompt appears asking for it.
4
Add Accessories — Click any dashed insert zone between joints to open the accessory picker. Choose Float Shoe, Float Collar, ACP/DV Tool, Hanger, Landing Joint, Stage Tool, etc. Lengths for common accessories are pre-filled.
5
Mark Centralizers — Click the · Centralizer button on any joint to cycle: None → SB ✓ (Stop/Band) → BS ✓ (Bow Spring) → None. Or use 🎯 Cent. Program to apply a depth-based centralizer program to the whole string at once.
6
Omit Joints — Click ✓ RUN on any joint to mark it ✕ OUT. Omitted joints are excluded from footage and depth calcs but remain in the tally for record-keeping.
7
Handle Lay Downs — If a joint is damaged on the rig floor, click 🔴 LAY DOWN. The joint is marked out and the Replace modal opens — pick a spare from the omitted joints on the tally or enter a field spare (custom JT# and length). The replacement is inserted in place.
8
Approve — Click ⏳ PENDING to toggle the tally to ✓ APPROVED. The status is reflected on the printed tally and saved with the file.
9
Export — 💾 Save exports a .tw.json file you can reload anytime. 📊 WellEz exports an .xlsx formatted for WellEz casing import. 🖨 Print opens a print-ready field tally with all depths, a summary, and signature lines.
Row Color Coding
- Primary Blue border — first (heavier) weight category
- Secondary Amber border — second weight category (e.g. 40# on dual-weight strings)
- ACC Orange background — accessory / sub
- Red border — joint laid down on rig floor
- Dimmed / strikethrough — joint marked OUT (omitted)
Keyboard Shortcuts
- Ctrl+S Save tally to .json file
- Ctrl+Z Undo last change
- Ctrl+Y Redo (also Ctrl+Shift+Z)
- Esc Close any open modal
Stats Panel (Right Side)
- String Overview — Mini SVG diagram of the full string to scale, with centralizer ticks marked in green.
- Stickup Indicator — Shows calculated pipe stickup above KB. Target is 3–10 ft (green). Red = too low, Yellow = too high.
- Footage — Footage run and left out, broken down by 47# and 40#.
- Accessories & Centralizers — Lists all accessories with total footage, and all joints with centralizers by joint number.
Tally Import — Required Format
The importer handles Wendigo/Latshaw and Dels/Digital Tally formats automatically. For either format, two rules apply — everything else is flexible:
- Column A = Joint Number — must be a positive integer (1, 2, 3…). Doesn't need to start at 1.
- Column B = Length (ft) — must be a decimal number between 0 and 300 (e.g. 44.32). Integer-only columns (like wall thickness) are automatically skipped.
Tally Import — What Gets Auto-Detected
- Well name — Scans the first 20 rows for a cell labeled Well Name, Well:, or Location and reads the value to its right or below it. Falls back to the filename if not found.
- Grade & thread — Scans header rows for a spec row like
[9.625, "47/40#", "L-80", "BTC"] (Latshaw style) or a comment cell like "13 3/8 54.5# J55 STC" (Dels style). Recognized grades: L-80, P-110, J-55, K-55, N-80, Q-125. Recognized threads: BTC, STC, LTC, EUE, NUE, VAM, FOX, Premium. If grade, thread, or OD size can't be detected, a prompt will appear asking you to fill them in — the importer never assumes.
- 47# → 40# weight transition — Scans all text columns in each data row for "End of 47" or "Start of 40" (case-insensitive). The joint on that row is marked 47# and all subsequent joints become 40#. Single-weight strings (surface casing, etc.) default to 47# throughout.
Tally Import — If Your File Doesn't Load
The most common reason an import fails is a non-standard column layout. To fix it manually:
- Open the file in Excel and ensure col A = JT# and col B = length. Move columns if needed and re-save.
- If lengths are stored as feet + inches (e.g.
44' 3.2"), convert col B to a decimal number first.
- If the tally has multiple sheets, move the joint data to Sheet 1 — the importer always reads the first sheet.
- If joint numbers are alphanumeric (e.g. "A-1"), they'll be skipped. The importer requires numeric JT# values.
- For 47#→40# transition: put the text
End Of 47# in any cell on the same row as the last 47# joint, in any column after B.
WellEz Export
Click 📊 WellEz Export to generate an .xlsx file formatted for WellEz's casing import. Column headers match WellEz field names exactly so they map on import.
- Component — Casing joints export as "Casing". Accessories map to the exact WellEz dropdown value: Float Shoe, Float Collar, Contingency Collar, DV Tool, Float Sub, Toe Sub, Liner Hanger, Landing Collar, Stage Tool, ECP, Guide Shoe, Reamer Shoe, Pup Joint, etc. Custom accessory names that don't match are passed through as-is — you may need to correct those in WellEz after import.
- Weight (LB) — Exported as 47 or 40 (numeric). OD is parsed from the casing size field. Grade and thread come from the string spec fields.
- Bottom MD (FT) — Calculated depth to the bottom of each item, requires TD to be set.
- Joint Used? (Y/N) — OUT joints export as N; all others as Y.
- Fields not tracked in Tally Wacker (ID, Max-Torque, Bottom TVD) are left blank — fill those in WellEz if needed.
Tabs — Multiple Strings
Use the Surface Casing, Int. Casing, Int. 2, Prod. Casing, and Liner tabs to manage separate strings independently. Each tab has its own items, undo history, and auto-saved state.
Installing — No Admin Rights Required
All three options work without administrator access on company computers:
- Option 1 — Open directly in Chrome: Open
tallywacker.html in Chrome. Full functionality. No setup needed.
- Option 2 — Install as a desktop app (recommended): Double-click
Launch App.bat. Chrome opens in app mode (no URL bar, looks native). Click ⬇ Install App in the toolbar — Chrome installs it to your Start Menu and taskbar. After that, launch it like any program. The batch file is only needed the first time.
- Option 3 — Microsoft Edge: Open
tallywacker.html in Edge, then use Edge's built-in install option (⋯ menu → Apps → Install this site as an app). Edge's PWA install is built into the browser with no extra steps.
All data is saved locally in your browser. Tally Wacker works fully offline after the first load.