# Supabase: PGRST100 “Parsing error in the query string parameter”

> Supabase returns PGRST100, a 400 parsing error in the query string. Fix the filter syntax: the operator, commas in values, quotes and brackets in or().

Canonical: https://app369.com/fix/supabase-pgrst100-parsing-error-query-string/
Last updated: 2026-11-09

PGRST100 is the PostgREST error for a query string it can’t parse, returned with HTTP 400. It usually comes from a filter built by hand, an or() string with a stray comma or bracket, or a value with commas or parentheses that isn’t quoted.

**Short answer**

Find the failing request in the network tab and read the details field. Check that each filter reads column=operator.value, wrap values that contain commas or parentheses in double quotes, and close every bracket in or() and and(). With supabase-js, use .eq(), .in() and .or() instead of building the URL yourself.

Rather not fix it yourself? [**App Fix Ticket**](https://app369.com/fixed-price/flutter-firebase-bug-fix/) starts with a fixed-price diagnosis, then a fixed price for the fix before any fix work.

## **Why PostgREST can’t parse the query, and the fix**

1. 01 ### **The filter has no operator**
  > “You can filter result rows by adding conditions on columns.” [**GitHub, Tables and Views: Horizontal Filtering**](https://github.com/PostgREST/postgrest/blob/main/docs/references/api/tables_views.rst) PostgREST filters are written column=operator.value, so ?age=13 fails where ?age=eq.13 works. The supabase-js filter methods add the operator for you.```
const { data, error } = await supabase
  .from('people')
  .select('id, name')
  .eq('age', 13);
```
2. 02 ### **A value contains a comma or parenthesis** Inside or() and in(), commas separate the items, so a value like Smith, John splits in two. Wrap such values in double quotes.```
.or('name.eq."Smith, John",name.eq.Doe')
```
3. 03 ### **Brackets in or() don’t balance** Every or( and and( needs its closing bracket, and nested groups need their own. Build the string in one place and log it before the request goes out.
4. 04 ### **The select or order string is malformed**
  > “Parsing error in the query string parameter.” [**Supabase docs, PostgREST error codes (PGRST100)**](https://supabase.com/docs/guides/api/rest/postgrest-error-codes) Also check: a stray space, quote or symbol in select, order or a JSON path can cause the same 400. Compare the string with the PostgREST syntax piece by piece.

Checked against the vendor’s docs on November 9, 2026: [Supabase docs: PostgREST error codes](https://supabase.com/docs/guides/api/rest/postgrest-error-codes); [PostgREST docs: Tables and Views (filtering)](https://github.com/PostgREST/postgrest/blob/main/docs/references/api/tables_views.rst).

## **Rather hand it over?**

Fixed scope, fixed price, paid upfront. The work happens in writing; no call needed.

- [from $450**App Fix Ticket**One reproducible bug in an existing mobile or web app, diagnosed and fixed.**See scope and start**](https://app369.com/fixed-price/flutter-firebase-bug-fix/)
- [from $450**AI-Built App Rescue**A Lovable, Bolt or Cursor app checked end to end in 3 days, then its worst problems fixed at a fixed price.****No issues worth fixing, no charge.**** If the Launch Check finds nothing rated medium or higher, Simon refunds the full $450. You keep the report either way. This applies to the first 10 Launch Checks bought after October 30, 2026.**See scope and start**](https://app369.com/fixed-price/ai-app-rescue/)

[**All 127 Fiverr reviews**](https://app369.com/reviews/)

Related: [**Supabase PGRST116 single row**](https://app369.com/fix/supabase-pgrst116-single-row/) · [**Supabase PGRST204 column not found**](https://app369.com/fix/supabase-could-not-find-column-pgrst204/) · [**Supabase PGRST200 relationship not found**](https://app369.com/fix/supabase-could-not-find-relationship-pgrst200/) · [**Supabase operator does not exist: uuid = text**](https://app369.com/fix/supabase-operator-does-not-exist-uuid-text/)

Questions

## **More on this error**

<details>

<summary>**Is PGRST100 a database error? **+</summary>

No. PostgREST rejects the request before it reaches Postgres, so the table, policies and data are not the problem.

</details>

<details>

<summary>**Why does the same filter work with supabase-js methods? **+</summary>

The supabase-js filter methods build and encode the query string for you. The error usually shows up where code builds the URL or the or() string by hand.

</details>

<details>

<summary>**Can you fix it for me? **+</summary>

If one bug is the whole problem, the App Fix Ticket covers it: a written diagnosis first, then the fix. If the app has more going on, the Launch Check is a written check of the whole app. Each issue found is rated critical, high, medium or low, with where it is and how it was confirmed. No issues worth fixing, no charge. If the Launch Check finds nothing rated medium or higher, Simon refunds the full $450. You keep the report either way. This applies to the first 10 Launch Checks bought after October 30, 2026.

</details>

A different error?

## **Describe it and get a written quote**

Send the error and what you were doing. You get a written scope, a fixed price and a timeline; Simon replies by email, usually within one business day.

[**Describe your problem **→](https://app369.com/contact/) [**All fixes**](https://app369.com/fix/)