Benchmask, Simple Use Case Oriented Benchmarking
Repo: https://github.com/matts-ch/benchmask
Goal
- Cheap and simple setup to benchmark masks in terms of filtration efficiency and differential pressure
- Sealing to (dummy) head is tested as well
Fineprint, what it is not, and disclaimer
- Replacement for lab testing, mainly since measuring particulate matter is hard, lab devices cost 15k and still have limitations.
- No policitcal, medical claims
And yes, I think a bad mask is still better than no mask, mainly for the big droplet transmission vector. For aerosols, I assume only a good mask with good sealing can make a difference.
Disclaimer
This is intentionally an early publication. I will add more details and code, if someone is interested (agile publishing ;-))
I work for Sensirion, therefore It was obvious to choose these sensors, but this project was done off the clock.
Findings
This is an interactive plot, you can deselect masks in the legend or zoom
In case you don't see a scatter plot above this text, I exceeded the traffic limit on chart studio, either go to a backup version 1 2 or a static version
- Sealing is important, see e.g. the mask with the "bad nosepiece" with tape, this mask performs excellent

- Cotton and other regular community masks perform rather poorly
- "Flat masks" perform very poorly, especially if there is no nose piece
All results
|
type |
PM0.5 Efficiency [%] |
PM1.0 Efficiency [%] |
PM2.5 Efficiency [%] |
Differential Pressure [Pa] |
Actual Volumeflow |
1 |
Cilander Community Mask |
38 |
43 |
45 |
5 |
19.84 |
2 |
Community Mask with integrated Filter |
18 |
20 |
22 |
11 |
20.34 |
0 |
DIY Cotton Community Mask |
21 |
24 |
25 |
0 |
19.06 |
3 |
FFP2/KN95 |
69 |
74 |
76 |
24 |
21.03 |
4 |
FFP2/KN95 |
67 |
69 |
70 |
24 |
20.95 |
5 |
FFP2/KN95 |
67 |
67 |
68 |
24 |
20.90 |
6 |
FFP2/KN95 |
67 |
68 |
69 |
24 |
21.18 |
7 |
FFP2/KN95 Taped |
88 |
89 |
90 |
29 |
20.14 |
8 |
FFP2/KN95 Taped |
92 |
98 |
101 |
29 |
20.49 |
24 |
Flat-Fabric Mask cheap |
12 |
15 |
17 |
6 |
20.28 |
9 |
Flat-Fabric Style Mask |
31 |
33 |
34 |
7 |
19.61 |
10 |
Flat-Fabric Style Mask Taped |
24 |
28 |
31 |
22 |
20.62 |
13 |
Livipro Community Mask Taped |
87 |
90 |
91 |
9 |
21.34 |
11 |
Lvinguard Community Mask (wrong size) |
43 |
47 |
50 |
13 |
20.74 |
12 |
Lvinguard Community Mask (wrong size) Taped |
53 |
57 |
58 |
24 |
19.92 |
14 |
No Mask |
-1 |
0 |
0 |
0 |
21.90 |
15 |
No Mask |
0 |
0 |
0 |
0 |
20.60 |
16 |
No Mask |
-1 |
-1 |
-1 |
0 |
21.02 |
17 |
Odlo Community Mask |
14 |
14 |
15 |
5 |
19.68 |
18 |
Odlo Community Mask |
21 |
25 |
27 |
5 |
26.08 |
19 |
Surgical Mask, bad Nosepiece |
21 |
25 |
27 |
1 |
19.99 |
20 |
Surgical Mask, bad Nosepiece Taped |
100 |
101 |
101 |
15 |
21.93 |
23 |
Surgical Mask, good Nosepiece |
57 |
60 |
62 |
6 |
20.08 |
21 |
Surgical Mask, good Nosepiece |
73 |
73 |
73 |
7 |
19.90 |
22 |
Surgical Mask, good Nosepiece |
39 |
40 |
40 |
5 |
21.42 |
Features
- Benchmark filtration efficiency, use PM1 as proxy for areosols
- Benchmark differential pressure (how hard to breath through mask)
- More realistic test, dummy head instead of the usual fabric only lab tests
- Huge range of volume flows possible
- Both directions possible (in-/exhale)
- Very simple setup, off the shelf and cheap parts
and some limitations
- I used only one artificial head, the findings are only valid with for that exact head.
- Particulate matter measurements are hard, I used a very affordable sensor, not lab equipment
Setup




The main idea is to use the fan with the mask as a air purifier inside a closed space. The better the mask, the faster the decrease in particle concentration. Given everything else (mainly the volume flow) ist constant.
The setup is rather simple and with off the shelf parts, bill of material ca. 200USD.
- Fan, e.g. remote control plane electric ducted fan (EDF), search for EDF (e.g. Banggood, Hobbyking etc.)
- Speed controller for the fan, also RC stuff, search for brushless esc. The requirements in terms of voltage/amps are minimal (8V,5A should already do it)
An Arduino with the servor library (https://www.arduino.cc/reference/en/libraries/servo/) is used. The set value is written via the serial port.
- Flow sensor is usded to measure the volume flow, I used a SFM3019 connected via the eval kit to the PC.
- Differential pressure sensor, I used a SDP3x evaluation board, but also SDP6xx, SDP8xx work perfect for that job. If you choose the sensor, keep in mind, that the differential pressure is rather small (ca. 20Pa), this is very small for the usual membrane based sensors. The sensor is connected via the eval kit to the pc.
- Particulate matter sensor, I recommend a SPS30. Connected via a USB-Serial cable (eval kit) to the PC. All data is logged with ControlCenter https://www.sensirion.com/en/controlcenter/
- Humidity/Temperature sensor, not absolutely necessary, but a very low relative humidity might lead to static charges and therefore an additional 'cleaning effect', SHT31 is a very robust choice and readily available on breakout boards
- Head: I used a hairpiece stand, but obviously 3D printing is always an option
Procedure
- Wear mask

- Generate particles inside the box (extinguish match or small candle)
- Close box
- Set fan speed such that the flow is in the desired range (I used 20litres/minute)
- wait 1min (homogenous particle distribution)
- start measurement, measure until concentration dropped significantly, 3minutes or 30% of the concentration is a good starting point
- fit the exponential curve to the data


With the measured data (Mass=particulate matter concentration, volumeflow) a linear fit works well.
- normalize filtration efficiency and pressure drop with volume flow (sometimes it is not possible to perfectly match the desired volume flow)
Compensation
To compensate for the natural decay of the particle concentration, I performed several measurements without masks. Also with increased pressure drop (smaller outlet). The dependency before compensation looks like that

I assume, that the increased impeller speed leads to more particulate matter deposition on the blades.
Next Steps
- Improve Documentation
- Measure some more masks
- Compare both directions
- Simulate a beard
- Use a second head
- Check influence of different particle sources (size distribution)
- Compare to perfect fit (taped) -> effect of fit
- Closed loop controller for volumen flow
- Automate whole measurement
For questions, comments etc. please contact me through matts-ch@gmx.ch
All information here is open source, I encourage copying, modifying and double checking my results. Depending on your scope (and my time), I'm happy to help.
Python data processing file and all raw data here processed https://github.com/matts-ch/benchmask