[API reference](https://evolu.dev/docs/api-reference) › [@evolu/common](https://evolu.dev/docs/api-reference/common) › [Type](https://evolu.dev/docs/api-reference/common/Type) › BooleanFromString

```ts
const BooleanFromString:  transform(
  "BooleanFromString",
  String,
  Boolean,
  {
    from: (value): Result<boolean, BooleanFromStringError> =>
      value === "true"
        ? ok(true)
        : value === "false"
          ? ok(false)
          : err({ type: "BooleanFromString", value }),
    to: (value) => (value ? "true" : "false"),
  },
  (error) =>
    The value ${safelyStringifyUnknownValue(error.value)} is not a boolean. Use true or false.,
) ;
```

Defined in: [packages/common/src/Type.ts:3259](https://github.com/evoluhq/evolu/blob/dd96d79f1dbe9a49fa12ce8e0aa7d3d0177795ca/packages/common/src/Type.ts#L3259)

Transforms a boolean spelled as text into a [Boolean](https://evolu.dev/docs/api-reference/common/Type/variables/Boolean).

This is useful for inputs that carry booleans as text, such as environment
variables, URL query parameters, and form fields. Exactly `true` and `false`
are accepted, the spellings JSON and JavaScript use, so a boolean has one
representation in every source.

### Example

```ts
import {
  assertEqual,
  assertErr,
  assertOk,
  BooleanFromString,
} from "@evolu/common";

assertOk(BooleanFromString.fromUnknown("true"), true);
assertOk(BooleanFromString.fromUnknown("false"), false);
assertEqual(BooleanFromString.to(true), "true");

const invalid = BooleanFromString.fromUnknown("yes");
assertErr(invalid, { type: "BooleanFromString", value: "yes" });
assertEqual(
  BooleanFromString.formatError(invalid.error),
  'The value "yes" is not a boolean. Use true or false.',
);
```