Flashlight Comparator Tool - 120+ beamshots & 60+ runtime graph measurements

Inspired by Wikilight.de, the Beamshot Comparator is a tool made to compare the large amounts of beamshots that I have taken over the years. I decided to try and make such a tool, seeing as Wikilight hasn’t been updated with new lights for the past couple of years.

I plan on adding more flashlights and their configurations to the list as time goes on. It’s also possible there will be new locations.

The website includes:

  • Different locations
  • List of lights sorted alphabetically
  • Flashlight specs based on my own measurements
  • Slider-style comparison
  • Downloadable comparison images
  • Some additional useful info

I coded the comparator with the help of Gemini Pro. The entire comparator itself fits inside a “Custom HTML” block in this WordPress post, while the beamshots are uploaded to the website and added to the comparator code as image links.
To help with adding large amount of beamshots to the comparator (with all the specifications), I use a script that helps semi-automate this process.

I’m releasing the code on Github, free for anyone to use. You can find it in the link below:

I’d love to see others create similar tools with their own beamshots.
I also added a compressed comparator, which could be used in reviews or comparisons. It doesn’t have the comparison downloadable section, only includes beamshots for 1 location and is easier to upload beamshots to.

12 Thanks

This is great!

2 Thanks


Added 13 new flashlights (in 3 beamshot locations):
Convoy:

  • L21A - SFT90
  • L21B - SFT25R, SFT42R
  • M21B - SFT42R, SFT90
  • M21E - LHP73B, SFT25R, SFT70
  • M21H - LHP73B
  • M21K - LHP73B, SFT90
    Wurkkos:
  • TD01C
  • TS28

All flashlights have been measured for lumen and throw.
Added a distinction between “0s” and “30s” lumen measurements.
For the new Convoy 20A driver flashlights (e.g. M21K, M21E LHP73B) I also included a “high” beamshot, as the turbo is only momentary.

5 Thanks

I think this thread (and the online app behind it) has been vastly underappreciated - just try it to see how much easier it is to make purchase decisions when you can easily figure out what to expect.

This, and maybe + the Map to see how close the lights you know are to the lights you want… :⁠-⁠)

3 Thanks

Very cool! Thanks to @grzybek337 and @mcjtom , both sites added to:

4 Thanks

On the subject of beam profiles, some users may find this helpful:

Given basic LED/reflector measurements, it generates an exact prediction for the hotspot/spill/corona angles, and visualizes it as a slice of the beam through the axis. Here’s a slightly more elaborate introduction/post about it on the subreddit.

Additionally, entering 2 more inputs (OTF lumens and emitting area) gives a prediction of maximum intensity/throw.

2 Thanks

Update 06.04.2026 (DD.MM.YYYY):
Added a new location (460m - field road):

31 flashlights available to be compared

You can also now zoom in using a new button.
Video:
https://imgur.com/a/u1CRxE8

3 Thanks

Update 16.07.2026 (DD.MM.YYYY)
Added an intractable runtime graph viewer with over 40 runtime measurements


Created scripts that allow to quickly go through a large amount of CSV runtime measurements, clean them up, convert lux to lumen and upload everything to the comparator.
Added the ability to set a default location and beamshot, for when you first open the website.

9 Thanks

Update 01.08.2026 (DD.MM.YYYY)
Added 9 new flashlights (3 beamshot locations, lumen runtime graphs with temperature)

  • L21B W5050SQ5, SFT60 & SFT90
  • L21A SFT42R
  • M21B SFT60
  • M21E W5050SQ5
  • M21H SFT40
  • 3X21D
  • M21H LHP73B w/ 3 degree lens


Feel free to compare them. I will be uploading my own comparisons created using the tool soon (e.g. L21A vs L21B with the same emitters, SFT60 comparison against SFT90 & SFT42R etc…)

3 Thanks

Update 06.08.2026 (DD.MM.YYYY)
Added throw measurements at turn-on (0s) to about 40 flashlights. Rather than being actual measurements, I calculated these values based on the turn-on (0s) lumens, 30s lumens and 30s throw value using this formula:

sqrt(0s lumen/30s lumen)*30s throw = 0s throw

Added the ability to turn the graph off, as I noticed that having it redraw itself every time you changed the flashlight was quite taxing on lower-end devices and caused a lot of lag. (On by default, though)

Added a small watermark to the beamshots and to the generated graph (only when the graph is downloaded). The watermark can be turned off, but I’d politely ask for you to not do so. I’d want to spread the word of the tool I created to more people.

When “downloading” images on chromium-based browsers by simply dragging the images to e.g. your desktop, they will now be given a proper name instead of “Untitled.jpg”. Doesn’t seem to work on Firefox though, sadly.
Updated/redid runtime graphs and measurements of certain flashlights

3 Thanks

Update 28.09.2026 (DD.MM.YYYY) - I somewhat forgot to make a changelog ealier, so there’s more new features here than usual.

New Flashlights Added

New Features & UI Changes

Graphing & Export Improvements

  • New Chart Legend Formatting: The legend now displays the specific battery/cell used for the test and the ambient room temperature.
  • Graph Axis Controls: Added manual input fields to lock the Max Y limit and Temperature Min/Max bounds, alongside smarter “Auto” and “Full” time axis scaling.
    I find this especially helpful as I use this tool to generate runtime graphs for all my tests/reviews.
  • Temperature Data: Fixed temperature line visual style by applying a smoothing function to the data.
2 Thanks

The M21K F150R 5000 K is now covered! Thank you!

Do you plan on adding it to the ‘field road’ set?

1 Thank

I need to motivate myself and go do beamshots in the location there today.

2 Thanks

How did that go? :⁠-⁠)

1 Thank

Sadly with a start of a new uni semester for me, I have a lot less time.

Yesterday I had an option to go to the location with the lights, but sadly it rained right before (which I didn’t notice), so I got no beamshots done.

In both images below is the same flashlight, just one pic I did a couple months ago and the bottom one I did yesterday.

I honestly dislike that location. It changes too much during the year (foliage, ground reflectability) and doesn’t have a proper target at the end to judge the throw. Finding a better location will prove difficult, though. We’ll see.

4 Thanks

While that is true, I wouldn’t worry too much about it because camera photos are already notoriously unreliable for estimating throw and spill, even with well-controlled conditions. You already publish detailed measurements on intensity, output, and runtime, which is more than enough information for anyone to get a good sense of both absolute and comparative performance.

IMO the purpose of beamshots is to give the viewer a rough idea of beam profile; this is unaffected by minor variability in viewing conditions.

Update 14.10.2026 (DD.MM.YYYY) - It’s been a few weeks, here are some new updates to the comparator

New Flashlight Added

New Custom Dropdown Selectors:

This was a long-due feature.

  • Model Grouping: Flashlights from the same series (e.g., Convoy L21B) are now grouped into a single entry, which you can click to expand and select the specific emitter/variant.
  • Filtering: You can now filter through the available lights, as well as show all flashlights available in the database (which is the case by default). Flashlights inavailable in a certain location will just appear with red text.
    |
  • Sorting: You can now sort the database based on my measurements (e.g. sort by cd/lm and scroll through the beamshots and see the beams get more and more focused.

If you experience any issues or have any more ideas, please feel free to share.

2 Thanks