FireflyLite E07X Canon

1lumen selects and reviews products personally. We may earn affiliate commissions through our links, which help support our testing.

FireflyLite E07X Canon review

FireflyLite E07X specs

Brand & ModelFireflyLite E07X Canon
Flashlight categoryHigh Output General Purpose
LED7*Nichia 519A 5000K
Max. output5200 lumens
Max. beam distance300 meters
Max. beam intensity?
Battery config.21700 battery
Onboard chargingUSB-C
Main modesMany, Anduril 2
BlinkiesMany
WaterproofIPX8
Review publication dateFebruary 2024

Review intro:

Ask anyone who follows the flashlight hobby about FireflyLite, and you’ll probably get a variety of reactions. Some will be good, some not so good. The last time I tested a Fireflies product was 2021, the ‘refreshed’ version of their best-selling E07. The refreshed E07 was great, and I really liked it, but it wasn’t a replacement for the absentee E07X Pro.

Well, flashlight junkies and enthusiasts can rejoice because along with lots of time for redesign, development, and testing, we have a crop of new lights from FireflyLite! I can’t think of a more hotly anticipated light than these guys: The X1S ‘Pharos’ and X1L ‘Elite’, NOV-Mu V2, and a new E07X, aka Canon.

Each sports a tweaked Lume1 driver (both buck and boost versions), patented magnetic USB C charging ports, premium optics, and exotic finishes. After years of waiting, they’ve sent some for testing, so a big thanks to Jack, Ivy, and the FireflyLite gang for that! The subject of this review is the E07X Canon. Let’s see if this one can make up for the original’s hiatus.

What’s in the package

Since the FireflyLite E07X has represented the upper-end of FireflyLite’s product line, but the packaging was a bit anticlimactic. Yep, just a box with some graphics. No fancy magnet or laminated cardboard. That’s fine, though. Here’s what’s inside:

  • FireflyLite E07X Canon
  • 4 o-rings
  • VapCell T50 5000 mAh 21700
  • Instruction guide for the UI
  • Lanyard with split ring and quick-release clip
  • Spare lens

I was surprised to see a spare lens in the box. It’s a nice touch for sure (with a caveat, though…read on for why). The lanyard is also better than the previous ones with their ends-melted-together nonsense. It’s a plastic, rubbery, Slinky coil type and works good. It has a quick-release clip on one end and a split ring for keying on the other. The test light included the VapCell T50 21700. It’s an optional add-on and came nearly fully charged, sitting at 4 volts

Flashlight in use, Build Quality, and Warranty

The E07X is a high-output, general-purpose flashlight, or EDC flashlight. The new one has grown in some dimensions and shrunk in others. It’s wider, but shorter, but it’s still a 21700 size tube light. It looks awesome, almost beautiful, and love how this thing feels in my hand. It’s nicely proportioned and the balance is pretty neutral. For pocket carry, after riding in my pants pocket, I think it’s a little portly for regular EDC use. A cargo pocket is a nice home for it, though. The aggressive hand grenade texture on the tube is an excellent gripping surface. The test light didn’t include the magnetic tailcap (fine by me-I am not a fan of those for anything other than work lights), but one is optional. The lanyard was pretty useful, but it’s too Slinky-like and took getting used to.

The head has 5 deep heat-sinking fins. For switching, you get an e-switch mounted in the middle of the head. I had no trouble reaching it from all grip angles. It has a beautiful black PVD (FireflyLite calls it diamond black VEP), a stainless steel button (matches the bezel), and a central LED indicator for on-state and charging. The switch LED is of course configurable through the UI, along with the front RGB aux LED array under the optic. The click action is very good, with slightly soft, but positive clicks with good feedback and feel. The USB C charging port cover is also stainless VEP coated in the same black color. The charge port is a brand new and patented design with a magnetic closure, and according to FireflyLite, it’s fully waterproof even when the port is open. 

The pocket clip design is unchanged from the prior E07X Pro. It’s a captured design (like the FW3A) and is retained by the tailcap. It’s not reversible, but has nice spring tension to it and grips really well. They’ve also added a laser-cut logo to the clip’s heel. Nice touch.

Build quality is one area where FireflyLite has had a bit of a rough go, and they’re transparent about this fact. I hadn’t experienced significant quality issues with the previous lights from Fireflies, just some color mismatch on the last E07 I reviewed. However, it seems the FireflyLite ghosts of quality control fail past are still lurking because the lens on the test light was damaged.

It looked dirty, but the smudges were actually scuffing and areas where the AR coating came off, almost like the glass was etched somehow. That second lens included in the box? Although it was wrapped in protective film, it was also damaged in the same way. FireflyLite did issue a notice that the first 50 units had this kind of damage and they’d be sending replacements (the X1S and NOV-Mu lenses were fine). 

The E07X isn’t what I consider a budget light. As of today (with a 25% discount), a base light (without special LEDs or add-ons, comes in at a hair over $100 US. Add Cree LEDs and it jumps $13 US. Adding a VapCell T50 battery and extra tailcap bumps it to $120 US. I expect the price will go up, so get these while you can since they’ll sell like Taylor Swift tickets. The light is milled from 6063-T6 aluminum alloy, and that’s good.

6063 aluminum takes a nicer surface finish, is more corrosion resistant, and has superior electrical conductivity and thermal properties. The machining is exquisite with no issues with no sharp edges. The finish is also new. You get a choice of two MOA (micro arc anodizing) finishes, fossil gray and dark white, and a standard matte black type III HA. The test light came in the dark white MAO and it’s really nice. The finish is a bit fragile though, and the clip had already worn through it in some spots after limited use.

The light can be fully disassembled, which is nice if you want to mod it further or just do your own maintenance. Even though the threads were lubed, unscrewing the tailcap and the head took some effort. The first 3 turns go pretty smooth, but the last 2 turns require what seems like excessive amounts of force. I added more lube to the o-rings, and it helped, but it still took more effort than I like. Either the o-rings are too big or their slots aren’t machined to correct tolerances.

The threads have been redesigned. They’re fully anodized T-shape threads (more like rectangular) and they’re very precisely cut. There’s o-rings sealing every joint as well: Both ends of the tube, bezel, and the lens. The IP rating has been upgraded to IPX8, up from IP66. This is a nice upgrade, even though not the proper IP68 I see on other higher-end lights. For springs, you get a driver spring and a tailcap spring. They’re nonmagnetic copper alloy with a silver plating, and plenty thick for good current handling. 

For the warranty, I couldn’t find anything on the FireflyLite website, but their old website, ff-light.com, does list warranty information, so take it away FF-light! We provide 3 years’ manufactory warranty to fireflies flashlights. (Consumable batteries are not in warranty. ) DOA products can be returned and refunded within 15 days, We will bear all the returning shipping cost.

LED, Lens, Bezel, Beam, and Reflector

The LED arrangement is unchanged here, with 7 LEDs under a TIR lens. LED choices as of this writing, include the Cree XP-L2 HI (probably XP-L HI), FFL351A HI, and the Nichia 519A. I suspect other options will also become available later (probably the Osram W1/W2).

The XP-L is 6500K, the FFL351A is advertised at 4000K 95 CRI. The 519A comes in two flavors: 5000K 90 CRI or 2700K R9080 variant at 95 CRI. The test light came with Nichia LEDs in 5000K.

This is a geat LED, and has found its way into tons of lights lately. It’s a flip chip (CSP) design with a low vF and can be driven pretty hard. Under the TIR you get a bunch of RGB aux LEDs. These are mostly for fun, but they do help with locating the light in the dark, and do work great when very low light output is needed (especially with the red ones). They are totally configurable with the UI. 

The TIR is unchanged from the prior model. It’s the Anna model sourced from Ledil, a single piece of PMMA with an array of integrated TIR lenses. The combined beam angle is 10 degrees. This gives a bit tighter hotspot and a little more beam distance over the 20 degree TIR of the non-pro E07 I tested previously. The beam is nice, with a defined hotspot and decent side illumination with more than enough beam distance for general purpose. Topping that optic is a gorgeous VEP coated black stainless bezel and a dual-layer AR coated mineral glass lens. The bezel is mildly crenulated and does offer some protection to the lens. 

Spectral measurements: 

I used an Opple Lightmaster Pro to measure the flashlight at 1 meter from the sensor.

Mode:CCT:CRI Ra:duv
Turbo4820 K96.8-0.0004

Dimensions and its competition

The Canon redesign has resulted in some shrinkage and growth. It’s shorter and the head is a bit bigger at 40 mm. 

Dimensions: 

FireflyLite E07XMillimetersInches
Length109 mm4.3 in
Head diameter40 mm1.6 in
Body diameter26.5 mm1 in

Dimensions are rounded to the nearest millimeter and the nearest tenth of an Inch.

Weight

FireflyLite E07XWeight in gramsWeight in oz
With battery204 g7.2 oz
Without battery134 g4.7 oz

Weight is rounded to the nearest gram and tenth of an Oz.

Flashlight size comparison with its competition:

Group 1 left to right: Acebeam E75, Fireflies E07 2021 Edition, FireflyLite E07X Canon, Astrolux MF01 Mini, Wurkkos TS25

Group 2 left to right: Fireflies E07 2021 Edition, FireflyLite X1S Pharos, FireflyLite E07X Canon, FireflyLite NOV-Mu V2, Fireflies PL09Mu

Group 3 left to right: WildTrail WT3M, Thorfire C8, FireflyLite E07X Canon, Imalent R30C, Emisar D1 V2

FireflyLite E07X UI: User Interface and Driver

The original E07X Pro featured a driver dubbed the Lume1. It was designed by Loneoceans as an Attiny1616-based 6A buck+FET driver. You’d get a max of 6 amps fully regulated output and direct drive FET for Turbo. This is great for Anduril lights where the max ramp brightness could be regulated up to 6 amps, which can give higher sustained outputs (within thermal tolerance though). The UI is ToyKeeper’s Anduril 2 and needs no introduction. While everyone who reads my reviews knows, I am not a huge Anduril fan and prefer simpler UIs, but this is an enthusiast light and not putting Anduril 2 on it would be like going to a Van Halen concert without wearing a tattered denim jacket, pleather pants, and piercings. This version of Anduril 2 is the newest one, with a unique ‘soft start’ when turning on/off and changing modes in the stepped ramping. I’m not crazy about it on this light, but maybe I have to get used to it.

Anduril 2 User Interface

Here is another Anduril 2 image.

And by default, it uses the Simple UI… and here is the UI diagram:

Anduril2 has two UI’s available: Simple and Advanced. The light came with the Simple UI enabled, and I think it’s kind of a misnomer because it’s still a little complicated for a first-time user. However, those familiar with the original will pick it up pretty quickly. Simple UI is missing some of the familiar features present in the original, namely the special blinky modes, temp check, and thermal configuration (those are present in the Advanced UI), and there’s no “muggle” mode either. You still get access to smooth ramping (stepped is, you guessed it, only available in Advanced UI), lockout, momentary high, battery check, and some useful lock/unlock modes.

The Advanced UI is appropriately named because it’s, well, advanced and there’s a plethora of options and configurations available. There’s probably way more features than the average user would ever dip into, but it’s nice to know you can tweak things like the voltage sensor calibration for batt check, AUX LED settings, and even configure the auto-lock. I found this to be a pretty useful feature that enables the light to automatically turn off after a certain amount of time if the light is accidentally activated.

Modes: Simple and Advanced UI both have many standard and blinky modes available, but the main modes are stepped and smooth ramping, but stepped ramping is only available in Advanced UI, and smooth is enabled in both Simple and Advanced.

Switch to Advanced UI from Simple: 10 clicks, but hold on the 10th click

From OFF:

  • Press and hold: Turns on in either smooth or stepped ramp (depending on which mode is enabled)
  • Single click: Turn on in last mode (step or ramp state-again depends on which mode)
  • Double click: Ramp ceiling/turbo
  • Triple click: Battery check (in Simple and Advanced UI)
  • Triple click and hold: Special strobe modes-remembers last used (in Advanced UI)
  • Quad click: Lockout mode. In lockout mode you have different options available:
    • 1 click: momentary moon (bottom of ramp)
    • 2 clicks: momentary (higher floor)
    • 4 clicks: turns on in ramp mode
    • 4 clicks with a hold: on in ramp mode, lowest/floor
    • 5 clicks with a hold: on in ramp mode, highest/ceiling
    • 10 clicks with a hold: configure the lock timeout threshold (in Advanced UI only). This is a new feature for Anduril2, it allows you to set a timeout to the lock, where the light will lock after a pre-set elapsed time. 

From ON:

  • Press and hold: Ramp up (depending on the mode)
  • Single click: Turn off
  • Double click: Ramp ceiling/turbo
  • Double click and hold: Ramp down
  • Triple click: Toggle between smooth and stepped ramping (in Advanced UI only)
  • Quad click: Lockout mode (see above for the lockout options)

Mode memory:

  • Yes, memorizes last on state setting either smooth or stepped ramping, but does not remember blinkies

Low voltage warning:

  • Yes, when in operation, the light steps down brightness gradually until turning off when the cell is  around 2.9 volts.

Strobe/blinkies

  • Yes, many! The blinkies are accessible from off with 3H (click click click-hold) in ADVANCED UI only. You switch between strobe modes with 2 clicks:
    • Candle mode
    • Bike flasher
    • Party strobe
    • Tactical strobe
    • Lightning storm

Lock-out mode: 

  • Yes. In Simple or Advanced UI, lockout is accessed by 4 clicks from on or off. 4 clicks to unlock. The lockout enables momentary operation in the moon mode, however, 2H (click click-hold) enables low mode. There are other lockout modes available (see the diagram). 

Temp check and thermal calibration mode

  • In the first version, you could do both the ambient temperature sensor calibration and thermal ceiling at the same time, but in Anduril2, it’s a little different. When in temp check, click 7 times and hold on the 7th to enter the thermal configuration. To configure the ambient temp, wait for the first flash and then set the ambient, but once you’ve done that, you need to go back to the temp check and click 7 times, hold on the 7th, this time, don’t let off the button. Wait for the 2nd blink, and then you can set the thermal ceiling. 

The light came set to Advanced UI out of the box with the ambient temp sensor pre calibrated. The thermal limit? FireflyLite says it’s set to 50 C. It’s no secret that I am not a fan of really complicated UIs. For most guys and gals though, if you leave it alone, Anduril 2 is actually nice. Better yet, quoting Ron Popeil (takes me back a ways) here, “set it and forget it” is pretty helpful here. Set smooth/stepped ramping, the thermal limit, tweak your brightness levels, change the aux LED settings, and get on your way.

Once you get the hang of it, this is a really useful UI with more features and functions than I’ll ever hope to use. What I like about Anduril 2 is it lets you set things to your liking, the thermal maximum for example, or the brightness of the aux LEDs (including the switch LED), and the maximum brightness for the ramping or stepped modes. All good things to have.

Oh, and I can’t forget that after comparing dozens of ‘ramping UIs’ on many flashlights, Andril has the best smooth ramping/stepped modes of any flashlight UI ever, and very good LVP also. There’s no limit to the tweaking available here, and thanks to it being open source, you can write your own revisions/additions.

FireflyLite E07X Canon Charging and batteries

The Canon takes a 21700 size battery. You can get the Canon with or without a battery (VapCell’s T50). FireflyLite says it takes up to a 71 mm cell, and they’re right! I couldn’t get standard button tops to fit properly (tailcap wouldn’t fully seat). I think I’m fine with that though since you don’t need protected cells. Onboard USB C charging is back here on the Canon also, but it’s been modernized with a magnetic charge port cover instead of the rubber one.

FireflyLite patented this one, and says the charge port will still maintain the IP rating even with the cover open. This is a great feature because it addresses a major issue with onboard charging, namely if the charge port fails somehow (or is left open) and water, dirt, or detritus gets in the port. The charging speed is unchanged from before, with up to 2 amps on tap. On the Ruideng AT35 USB A tester and Hidance USB C tester, I got a bonafide 5 volts 2+ amps.

Charge typeFitsNo fitCharge time
Onboard USB-CStandard flat tops71 mm long 21700sFor a 5 Ah cell, about 3 hrs

Performance test

Lumen measurements

How Lumens are Measured: Understanding ANSI FL1 Standards How Lumens are Measured: Understanding ANSI FL1 Standards: The ANSI FL1 standards specify that output in lumens should be measured 30 seconds after turning on, as this is the standardized time for measuring brightness according to the industry standard. This is why we focus on this part in our measurements. The ANSI FL1 standards require an ambient temperature of 22 ± 3°C. We record the ambient the ambient temperature to identify potential reasons for any observed discrepancies.

Lumens are measured in my 50 cm integrating sphere with a Digi-Sense 20250-00 data logging luxmeter. The sphere has been calibrated with a Convoy S2+ measured to 260 Lumens and the figures are within 10% of actual. I use a Thisinde B18B+ multimeter with 14 gauge wire on banana plugs in the meter for low current and my FY219 clamp meter for higher currents over 200 mA. and tested the stepped modes in the Advanced UI. I set the thermal ceiling to 65 C this time for the test and used the included VapCell T50.

ModeAmps at startSpecified0 sec.30 sec.10 min.
L12.5 mA?N/AN/A
L217.7 mA?66
L3120 mA?7575
L4580 mA?295295
L51.98 A?800787750
L65 A?162415871365
Turbo21.6 A580041823813861

Ambient temperature during testing:

  •  19.8 °C 

Parasitic drain:

  • Aux LEDs on: 1.43 mA 
  • Aux LEDs off: .01 mA

FireflyLite lists 5800 Lumens for the 519A 5000K LEDs on the product page, but I’m coming up about 1700 Lumens short. I tried other batteries including Samsung 30T, 40T, and 50S, and a Molicel P42A to see if I could get better output, and there seems to be a hard limit around 22 amps (measured), capping at about 4300 Lumens, so the VapCell T50 isn’t limiting the output much. Additionally, during testing, I experienced some deja vu from the last E07 I tested since the very deep step down at about 25 seconds in Turbo.

Changing the thermal ceiling, switching to Simple UI, switching batteries, nothing helped. It seems programmed into the UI. Strangely, the red E07X with the FFL351A HI LEDs FireflyLite sent didn’t have this issue and it held Turbo for about 20 seconds longer.

FireflyLite E07X Canon Battery Life: Runtime graphs

How Runtimes are Measured: Understanding ANSI FL1 Standards About ANSI FL1 runtime standards: The runtime is measured until the light drops to 10% of its initial output (30 seconds after turning on). This does not mean that the flashlight is not usable anymore. The last column shows how long the light actually works till it shuts off. If there is a + symbol, it means that the test was stopped at that particular point, but the light was actually still running. This happens on certain occasions, with certain drivers, firmware, or batteries.

Lumens are measured in my 50 cm integrating sphere with a Digi-Sense 20250-00 data logging luxmeter. The sphere has been calibrated with a Convoy S2+ measured to 260 Lumens and the figures are within 10% of actual. I use a Digi-Sense 20250-92 data logging thermocouple for the temperature measurements. The probe is affixed to the head using kapton tape and uses the same 5 second sampling rate for logging. I tested stepped modes L5, L6 and Turbo in Advanced UI. The thermal limit was set to 65 C for the testing. used the included VapCell T50 for the testing.

ModeSpecifiedRuntime (ANSI FL1)Time till shut off
L5?2h 27m2h 42m*
L6?2h 5m2h 20m*
Turbo?1h 59m2h 4m*

*The light was still running at a very low level when the test was terminated

The runtimes look great! There’s definitely a fully regulated driver at work here, and the output is regulated well for all the tested modes. It’s way better than the FET+3 E07 2021 Edition I tested, but like the E07 2021, the annoying step down on Turbo is still persistent with the E07X Canon. It seems like a timed step down since my temp gun and thermocouples all show the step down happening around 40-45 C, not the 65 C set in the UI.

The light does thermal regulate just fine after the step down and after ramping back up, but with the high thermal limit, the light is too hot to handle by about 4 minutes in, with the tube hitting 58 C. Like all Anduril lights, the output steps down three times for LVP, with the last one stepping down to about 0.5 Lumens and runs forever, so this is where I end the tests. The battery was consistently discharged to 2.9 volts, and the light was usable after every runtime test.

For the comparison graph, you can see the improvement the Lume1 driver makes versus the unregulated E07 2021 Edition, which has much higher output initially, but drops quickly with poor regulation. It comes close to the class-leading Acebeam E75 in sustained output.

Peak beam intensity and beam distance measurements

About Peak beam intensity: Understanding ANSI FL1 Standards About peak beam intensity The calculated value of distance in meters at which the flashlight produces a light intensity of 0.25 lux. (0.25 lux is about the brightness of a full moon shining on an object). This means that the intensity has decreased so much, it becomes difficult to see darker objects, or objects that don’t reflect light. The columns ‘Meters’ and ‘Yards’ use rounded numbers.

Beam distances are measured using a Uni-T UT383S luxmeter measured indoors at 5 meters using the included fully charged battery. Measurements taken at 30 seconds. I used the VapCell T50 for the test. The battery was topped off and the light allowed to cool between the L6 and Turbo measurements.

ModeSpecifiedCandela measured MetersYards
L1?N/AN/AN/A
L2?N/AN/AN/A
L3?225 cd3033
L4?975 cd6268
L5?2625 cd102111
L6?5800 cd152166
Turbo?4050 cd 127139
Turbo @ start?16,250 cd255279

Ambient temperature:

  •  19.5 °C 

FireflyLite only lists a single beam distance figure for the E07X with the 519A 5000K LEDs of 300 meters. The measured candela is pretty low and unimpressive, but even at 250 meters, this is plenty of distance for EDC work and most lighting tasks.

Beamshots

Camera settings and distance: Photos taken with a Canon EOS R100 and Canon R-FS 18-45mm STM lens set to 0.3s, F5 ISO 1600 and 5000K WB.The fence is 95 meters away. The trees beyond the fence are about 150 meters distant.

Beamshots of the following flashlights compared:

  • FireflyLite E07X Canon
  • FireflyLite E07X with FFL351A LEDs
  • Emisar D1 v2
  • Astrolux MF01 Mini
  • Fireflies E07 2021 Edition (Cree XP-L HI)
  • Wurkkos TS25

Please note that the following beamshots are mainly intended to showcase the beam pattern and beam quality, rather than overall performance. These images are typically taken directly after activation, and in different seasons or weather conditions, and therefore do not fully represent its overall performance. For accurate performance metrics, such as output, beam distance, and runtimes, you need to look at the performance section of this review.

Disclaimer: This flashlight was sent to us for review at no cost by FireflyLite. We have not been paid to review, nor have we been holding back on problems or defects.

Final Verdict

Pros

  1. Excellent build quality
  2. True 2 amp onboard charging
  3. Fully protected charge port
  4. Fully regulated driver
  5. Great beam quality and tint
  6. Available with a variety of LEDs

Cons

  1. Light received with damaged lenses
  2. Tailcap and battery tube tough to tighten and loosen
  3. Down on output
  4. No lanyard mounting point on the light

Explanation on star ratings:

1: Avoid: a match would be a better choice – 2: Poor: significant defect or issues; almost unusable – 3: Average: some defects or issues; but still usable 4: Good: recommended (minor issues) – 5: Great: highly recommended

Reviewer Nick
Author: Nick

4 stars: ★★★★

While our star rating provides a reliable indicator, we encourage you to read the full review to make an informed decision based on your own needs and preferences.

The saying goes, when life throws you lemons, make lemonade. After a somewhat rocky launch as a startup in 2018, negotiating quality control and customer service issues, and global part shortages and logistics challenges, I’d say FireflyLite has done exactly that with these new lights. This E07X has been a highly anticipated release, and after spending some time with the Canon, I can say overall, they’ve redeemed themselves.

First off, I love the new host, MAO finish, protected charge port, premium optic, and all the things that made the prior E07X great are all here too: The near-perfect general purpose beam, popular LED choices, and fully regulated performance from the Lume1 driver. I think FireflyLite has come as close as possible to creating a boutique flashlight.

What I don’t care for is the timed Turbo step down, and the fact that I was shipped a light with not one, but two damaged lenses. They made it right though (and sent another E07X to test on!), but still, that’s a major quality control snafu that shouldn’t happen with a brand-new, flagship light. I couldn’t crack FireflyLite’s 5800 Lumen figure with this test light either. While not a deal-breaker, it’s never a good sign if you’re making grunting noises when tightening or loosening tailcaps and body tubes. Just saying.

FireflyLite…lube is your friend. The E07X Canon isn’t exactly Genesis, but it represents a huge step in the right direction for FireflyLite (or is it Fireflies?). I can’t overlook the quality control blunder, or the other issues, but they’re easily remedied. With those improvements, this could be the best general purpose flashlight to come out of the FireflyLite camp in a good long while. 4 stars for the E07X Canon.

Buy your FireflyLite E07X Canon with a discount

Get 10% off at Firefly Outdoor store, using our exclusive discount code: 1lumen

1lumen selects and reviews products personally. We may earn affiliate commissions through our links, which help support our testing.