FASTQ read quality filter
Filter strict four-line single-end PHRED+33 FASTQ by an inclusive all-base score interval, retaining selected original record bytes and complete decisions.
- 1Add input
- 2Adjust settings
- 3Get your result
Tool input and files are processed in this browser without being uploaded.
Before you start
Keep or drop whole reads using an explicit quality interval. The default 30–42 matches the quality characters ? through K; legal @ and + characters stay quality data.
How to use this tool
- Open a four-line PHRED+33 FASTQ and choose the inclusive score interval.
- Inspect kept/dropped counts, score histograms and complete per-record reasons.
- Download the byte-preserving filtered FASTQ and all decision rows.
Supported inputs and limits
One UTF-8 file or paste up to 10 MiB, 100,000 records and 4,000,000 total bases. Complete downloads up to 40 MiB. Empty whole files produce zero records; nonempty records require at least one base.
Strict four lines per record: nonempty @identifier, IUPAC DNA/RNA sequence, + with an optional identical full identifier, and equal-length quality. PHRED+33 ASCII ! through ~ scores 0–93. Wrapped FASTQ, Phred64 guessing and paired synchronization are unsupported.
Every base must fall inside the inclusive minimum/maximum interval, default 30–42. A read containing Q43 is dropped too. Reports include minimum/maximum/mean, outside count, kept/dropped reason and two complete 94-bin score histograms. Means are arithmetic score averages.
Use only LF or only CRLF within one file. Mixed conventions and lone CR reject. A final quality line without a newline is legal. Each kept entire source record preserves header, plus line, bytes, ordering and EOF state. Byte spans are half-open UTF-8 offsets.
Table preview shows 200 decisions with long cells clipped to 2,000 characters. Above 20,000 report characters copying gives an explicit preview. Complete FASTQ/JSON/CSV remain downloadable; invalid or over-budget input returns no partial filtered file. No biological or medical interpretation.
Worked example
Example input
@first info ACGT + ???? @lower AC +lower @+ @upper A + L
Example options
{"secondary":"","params":{"minPhred":30,"maxPhred":42,"spreadsheetSafe":true}}Example output
{"format":"strict-four-line-single-end-PHRED33","summary":{"records":3,"kept":1,"dropped":2,"bases":7,"minPhred":30,"maxPhred":42,"newline":"CRLF","histogramBins":94,"keptBytes":28},"histogram":[0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"retainedHistogram":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"records":[{"index":0,"id":"first info","byteStart":0,"byteEnd":28,"bases":4,"minimum":30,"maximum":30,"mean":30,"outside":0,"decision":"kept","reason":"all_bases_in_interval"},{"index":1,"id":"lower","byteStart":28,"byteEnd":52,"bases":2,"minimum":10,"maximum":31,"mean":20.5,"outside":1,"decision":"dropped","reason":"quality_outside_interval"},{"index":2,"id":"upper","byteStart":52,"byteEnd":69,"bases":1,"minimum":43,"maximum":43,"mean":43,"outside":1,"decision":"dropped","reason":"quality_outside_interval"}],"scope":"Inclusive all-base interval. Wrapped FASTQ, Phred64, paired synchronization and zero-base records unsupported. Source byte spans use half-open UTF8 offsets; kept records retain bytes and EOF exactly. Mean is the arithmetic score average."}When something does not work
Check four-line record structure, matching optional plus identifier, nonempty IUPAC sequence, ASCII PHRED+33 quality and one newline convention. Correct the interval or re-export a supported file; reduce input if full outputs exceed40 MiB.
Frequently asked questions
Why is a quality line beginning with @ not a new read?
Record boundaries are the declared four-line structure. @ is a legal PHRED+33 score31, and + is score10 in the quality line.
Is minimum30 enough to match the default?
No. Default is the inclusive interval30–42. Every base must meet both bounds; a score43 fails.
Will this keep mate pairs together?
No. It processes a single-end file independently. Use a pair-aware workflow for paired data.
Documentation & further reading
Related tools
JSON formatting workspace
Format or minify strict JSON, sort object keys, and encode or decode strings while preserving raw number tokens.
Regex tester
Try a pattern and see what it matches in your text.
Compare text
See what changed, side by side.
HTML formatter
Format HTML indentation so its structure is easier to read.