Three encodings, and why offering one is wrong
This is where most tools quietly mislead. Percent-encoding is not a single operation, and picking the wrong one of the three is usually the bug that brought you here.
Component encoding escapes everything structural - ampersand, equals, question mark, slash, hash - and is what you want for a single value going into a query string. Full-URL encoding deliberately leaves those alone, because escaping the slashes in a scheme produces something that is no longer a URL. Form encoding is component encoding with space as plus rather than percent-twenty, which is what HTML forms and most HTTP clients send by default.
The last one is not interchangeable with the others. In form encoding a literal plus decodes to a space, so round-tripping a value through the wrong mode silently corrupts any plus sign in it - a base64 payload in a query parameter is the usual casualty.