Golf Shot Analyzer for InRange™

Golf Shot Analyzer for InRange™

Golfer hitting ball at Hazendal driving range using Inrange™ Simulator
Hazendal driving range with Inrange™

InRange™ logs everything: ball speed, carry, apex, launch angle, shot curve. Every shot, every session. You walk out of the bay with an Excel file full of numbers you'll never look at.

After two sessions and 340 shots, I decided to actually do something with mine.

The chart I didn't plan for

I assumed the scatter plot would be the useful part, lateral spread versus carry, coloured by club. It's fine.

The trajectory view is what actually told me something. Each shot as a stacked arc. Driver arcs peaking at 30 metres, others at 19. Same club, same session. That's not a bad strike here and there — something more structural is off. You can feel inconsistency on the range. Seeing 30 arcs that won't stack is a different kind of clear.

The first version baked the shot data into the HTML as a JavaScript array. Fine until you want to add a session, at which point you're rebuilding the file. I knew I'd stop doing it.

SheetJS reads the Excel file directly in the browser. Drag it onto the drop zone, everything rebuilds. Nothing leaves your machine. Adding a new session is just appending rows to the spreadsheet — no code, no redeploy.

I nearly built an API. Glad I didn't.

What I found out

My mid-irons are more consistent than I thought. The problem is lateral — I'm spraying it, not coming up short. About 12 shots across both sessions look like genuine mishits when you see ball speed drop and the arc go flat. I wouldn't have found those in a spreadsheet.

There's also a cluster of amber dots (predicted shots) sitting 20 metres short of my 7-iron average. I was probably reaching for a 9-iron without thinking about it. The kind of thing you only notice when you can see all the shots at once.

Try it

Live at https://www.johannesmerwe.com/project/golf-shot-analyzer loads with my data by default. If you have inRange sessions, drop your Excel export on the drop zone.

  • Club tabs and session dropdown filter everything together.
  • Click any arc or dot to pin a detail card. Esc to clear.
  • Amber dots are shots where the sensor guessed the club.

Built with Claude Code, Chart.js, and SheetJS. One conversation. An afternoon I probably should have spent on the range instead.