# Options

Pixel's Settings page has three sections: **Output** and **Canvas**, described
here, and [Fonts](/docs/pixel/settings/custom-fonts.md). AI provider keys are not
among them: they live in the global settings, see
[Assistant](/docs/pixel/ai/chat.md#provider-keys). Each section saves on its
own: its **Discard** and **Save** sit in the section's header.

## Output

Output applies to every image on the site. Pixel stores it in the
`sleek-pixel_settings` option, which the `SettingsOperations_saveOptions`
operation and `wp sleek pixel settings set` write.

### File format

The format of every rendered file: **PNG** (the default), **JPEG** or
**WebP**. Facebook and X generally expect PNG or JPEG for `og:image`; a WebP
image may not show in their previews. After a change, each image renders again
in the new format on its next request, and its earlier file is deleted.

### Image processing

How an image that has no rendered file yet is produced for a signed-in user:

- **Synchronous** (the default) renders the file during the request that needs
  it, so the image is there on the first view at the cost of a slower response
  for that one request.
- **Asynchronous** queues the file and renders it in a background request after
  the page is sent. A REST response and a feed render at once even then,
  because no later view would show them the image.

A visitor who is not signed in never waits for a render, whatever this setting
says: their request queues the file like Asynchronous does, so no visitor can
make the site render. While a file is queued, Pixel uses the image's last
rendered file for the same post and use, from before the design or Pixel
changed. When there is none it leaves the page's existing Open Graph and
Twitter Card tags and its featured image untouched, and its PHP functions and
shortcode return nothing. A file is queued once: later requests wait for that
render, and queue it again only when it has not finished within ten minutes.

The background render runs on the site it was queued on, also when a network's
sites share the queue, in the language the page was requested in and with the
[page values](/docs/pixel/dynamic-data.md#the-groups) the page had.

The block editor sidebar panel, WP-CLI, `wp sleek pixel render` and cron jobs
always render synchronously, whatever this setting says.

## Canvas

Canvas holds editor preferences. They belong to the signed-in user, not the
site, so every administrator keeps their own; the `User_read` and `User_save`
operations serve them.

| Setting                          | Default | What it does                                                                     |
| -------------------------------- | ------- | -------------------------------------------------------------------------------- |
| Show guidelines                  | On      | Shows alignment guides while you move elements.                                  |
| Snap to guidelines               | On      | Snaps moved and resized elements to nearby guides.                               |
| Show margin                      | On      | Draws the canvas's safe margin.                                                  |
| Shift-step increment             | 10      | The distance an element moves while Shift is held.                               |
| Remember opened accordions       | On      | Restores the inspector sections you had open, separately for each workspace tab. |
| Show rendered image in Structure | Off     | Shows a rendered preview above the element list.                                 |
| Show element preview             | Off     | Shows a small preview of the selected element.                                   |

## From the command line

`wp sleek pixel settings get` prints the Output settings and
`wp sleek pixel settings set` changes them, for example
`--imageProcessing=async`. The [CLI reference](/docs/pixel/reference/cli.md) has
their arguments.
