Sofirn SF15 Tactical UV Flashlight with Regular White Light

$9.32 $20.99 Save 56%
Sold 734
Style:  without battery
Share the love

Product manual, click to download!


1. SLIM PENLIGHT: Sofirn SF15 is a penlight and UV flashlight combination that is built to last. The penlight is light, slim, compact, stylish, and takes up little space. You can carry it in your handbag or pocket.

2. VERSATILE FLASHLIGHT AND UV LIGHT COMBINATION: It has a variable light output and a UV mode, both of which are useful for daily use. The white light is used to check the nose, ears, and throat. It is also suitable for home use, night walking, camping, reading, fishing, and cycling. The UV light is used to detect pet stains, and fluorescence and authenticate money.

3. AAA-POWERED FLASHLIGHT: This ultra-small LED flashlight is powered by two AAA batteries and can produce 300 lumens of intense light. The running time is about 50 minutes on high mode and 54 hours on low mode.

4. YOUR DAILY COMPANION: The penlight has a switch on its rear making it easy to turn on and off. It also features a pocket clip, making it easy to carry with minimum risk of losing the flashlight. It produces an ultra-focused beam of 300-lumen. This penlight is a good companion for doctors, mechanics, nurses, electricians, etc.

5. WELL-BUILT PENLIGHT: Our flashlight features a slim design, compact size, and portability. The penlight is made of high-quality aluminum alloy and LED, with long service life and reliability. Its casing is robust and durable and can survive being dropped.


Emitter: white light led + UV light led
Battery options: 2x Alkaline AAA batteries, 2x Ni-MH AAA batteries
Operating voltage: 1.8V – 3V
White light mode wattage: 3W
UV light mode wattage: 3W
Boost driver
Dimension: 133mm (length) × 15mm (head diameter)
Beam angle: 123 degrees
Weight: 25 grams (without battery)
Flashlight body: Aerospace grade 6061 grade aluminum alloy
Toughened glass lens
Water resistance: IP68 (up to 2 meters underwater, not for diving)
The flashlight steps down automatically or blinks when the battery is low.
When the battery is low, brightness won't have a conspicuous change after you switch to other brighter or dimmer modes.
The flashlight is compatible with batteries of 86mm to 91mm. There might be a rattling when you use some shorter batteries. Don't worry, it does not affect normal use.

Customer Reviews

Here are what our customers say.

Write a Review
Customer Reviews
Wow you reached the bottom
Most liked
Highest ratings
Lowest ratings
class SpzCustomFileUpload extends SPZ.BaseElement { constructor(element) { super(element); this.uploadCount_ = 0; this.fileList_ = []; } buildCallback() { this.action = SPZServices.actionServiceForDoc(this.element); this.registerAction('upload', (data) => { this.handleFileUpload_(data.event?.detail?.data || []); }); this.registerAction('delete', (data) => { this.handleFileDelete_(data?.args?.data); }); this.registerAction('preview', (data) => { this.handleFilePreview_(data?.args?.data); }); this.registerAction('limit', (data) => { this.handleFileLimit_(); }); this.registerAction('sizeLimit', (data) => { this.handleFileSizeLimit_(); }); } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } setData_(count, file) { this.uploadCount_ = count; this.fileList_ = file; } handleFileUpload_(data) { data.forEach(i => { if(this.fileList_.some(j => j.url === i.url)) return; this.fileList_.push(i); }) this.uploadCount_++; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleFileUpload", { count: this.uploadCount_, files: this.fileList_}); if(this.fileList_.length >= 5){ document.querySelector('#review_upload').style.display = 'none'; } if(this.fileList_.length > 0){ document.querySelector('.apps-reviews-write-anonymous-box').style.marginTop = '8px'; } } handleFileDelete_(index) { this.fileList_.splice(index, 1); this.uploadCount_--; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleFileDelete", { count: this.uploadCount_, files: this.fileList_}); document.querySelector('#review_upload').style.display = 'block'; if(this.fileList_?.length === 0){ document.querySelector('.apps-reviews-write-anonymous-box').style.marginTop = '132px'; } } handleFilePreview_(index) { const finalPreviewData = this.fileList_[index]; const filePreviewModal = document.getElementById('filePreviewModal'); const fullScreenVideo = document.getElementById('fullScreenVideo'); const fullScreenImage = document.getElementById('fullScreenImage'); const previewModalClose = document.getElementById('previewModalClose'); const previewLoading = document.getElementById('previewLoading'); = 'block'; = 'flex'; if(finalPreviewData?.type === 'video'){ const media = this.mediaParse_(this.fileList_[index]?.url); fullScreenVideo.addEventListener('canplaythrough', function() { = 'none'; }); fullScreenImage.src = ''; = 'none'; = 'block'; fullScreenVideo.src = media.mp4 || ''; } else { fullScreenImage.onload = function() { = 'none'; }; fullScreenVideo.src = ''; = 'none'; = 'block'; fullScreenImage.src = finalPreviewData.url; } previewModalClose.addEventListener('click', function() { = 'none'; }); } handleFileLimit_() { alert(window.AppReviewsLocale.comment_file_limit || 'please do not upload files more than 5'); this.triggerEvent_("handleFileLimit"); } handleFileSizeLimit_() { alert(window.AppReviewsLocale.comment_file_size_limit || 'File size does not exceed 10M'); } clear(){ this.fileList_ = []; this.uploadCount_ = 0; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleClear", { count: this.uploadCount_, files: this.fileList_}); document.querySelector('#review_upload').style.display = 'block'; } mediaParse_(url) { var result = {}; try { url.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (str, key, value) { try { result[key] = decodeURIComponent(value); } catch (e) { result[key] = value; } }); result.preview_image = url.split('?')[0]; } catch (e) {}; return result; } triggerEvent_(name, data) { const event = SPZUtils.Event.create(, name, data); this.action.trigger(this.element, name, event); } } SPZ.defineElement('spz-custom-file-upload', SpzCustomFileUpload);
The review would not show in product details on storefront since it does not support to.