Pixa
GitHub

Account Settings

Status: Live

Described from the app's code of 2026-10-04 (commit ca1d157). One setting, Preferred Payout, is stored but has no effect yet.

The app has two kinds of setting that look alike on screen but live in different places. Everything under Settings is kept in the browser and never leaves it: language, currency, how artworks are drawn, what is filtered, which node is used. Everything under Edit profile is written to the chain, in the account's posting_json_metadata, where any program can read it. This page lists both, says where each is stored and what it does, and notes where the app's behaviour differs from what its labels suggest.

Where settings live

Kind Stored in Travels with Visible to
Settings (the gear) The browser's local database, LacertaDB, document main_settings, one per browser profile (settings.js:292-321) Nothing: another browser or device starts from the defaults You
Profile (Edit profile on your page) The chain: the account's posting_json_metadata, written with account_update2 Every app that reads the chain Everyone
Keys and session The browser, encrypted with your password, until you log out (Keys and Recovery) Nothing You
Notification read marks, favourites, drafts The browser, LacertaDB Nothing You

The chain has no concept of a setting. Hive front ends sometimes store preferences in posting_json_metadata too; the Pixagram app stores none there.

Settings

Open them with the gear in the toolbar, or at https://pixagram.com/+settings. Each row is one control; the stored key and default are from the code.

Display

Control (label) Choices Default Stored as Effect
Languages 51 locale codes, served by 27 language files; a locale without a file falls back to English The browser's language locales The app's text. Posts are not translated.
Currency 34 currencies From the locale currency The currency the wallet converts to, through Frankfurter's rates; PIXA itself has a placeholder price (Wallet Basics)
Rendering Engine Square (square), Hexagon (hexagon), Retro (crt), Painting (xbrz), Painting (Fast) (tri) Painting renderer How pixel art is scaled on screen; the stored image is unchanged
Disable GPU Optimization on, off on (mode: "CPU"); off stores GPU mode Draws with the processor instead of WebGL. The default is the processor; turning the switch off enables the GPU path.
Download File Format PNG, WebP, JPEG WebP format The format of a downloaded artwork
PDF Default Page Size A4, US Letter A4 pdf_page_size For the wallet's PDF export and printed artworks

Content

Control Default Stored as Effect
Don't filter NSFW content off: "NSFW content is hidden" nsfw_filter (true while filtering) On, artworks marked NSFW appear in feeds and profiles, blurred.
Don't blur NSFW content off: "NSFW content shows blurred" nsfw_enabled On, shown NSFW artworks are not blurred. Turning it on asks you to confirm "I am 18 or older" (SettingsDialog.js:282-290, 672-692). While blurring is on, an on-device model also blurs unflagged artworks it rates likely NSFW (Censorship Resilience and Moderation)
Toxic Comment Helper on: "Kindly flags harsh wording while you type" toxicity_enabled An on-device model underlines harsh wording in a comment before you post. It blocks nothing.

The panel says of both models: they "run on tiny AI models that work fully offline … No data is ever sent to a server". The models are loaded with the app and run in the browser; the search box is the one feature that sends your text to a service (Search).

Posting and voting

Control Choices Default Stored as Effect
Preferred Payout Renounced, Balanced, Sovereign Balanced (share) payout (decline, share, power) None today. The value is saved and read back by the dialog, and nothing else reads it; a post's payout options are set in the post editor's own panel (Posting and Rewards)
Licensing Configure or reset a default licence None: "new posts start from the standard Pixa NFT License terms" default_license The starting terms the editor shows for a new post; the licence itself goes into the post's json_metadata only when you publish (Artwork Encoding Spec)
Voting Power 1% to 100% 100 voting The weight of a vote cast by clicking the heart
Always ask before voting on, off off askvote On, every vote opens a dialog to choose the weight first

Endpoint

The Endpoint section lists the six public nodes with their measured latency and lets you set a custom one ("Set custom endpoint", "Type a URL, then press Enter or the check to switch to it").

Behaviour Detail
Default api.pixagram.com. On first start, while no node has been chosen, the app times all six and keeps the fastest that answers (settings.js:330-372).
The six api.pixagram.com, pixarex.net, merlion.surf, blockforge.lol, boitata.quest, pixa-dubai.xyz (constants.js:94-137; JSON-RPC Surface)
Custom Any HTTPS address; it must run the same gateway or the app's field names fail (Differences from Hive)
Stored as api_node_url and api_node_source

There is no theme setting.

Your profile

Edit profile, on your own page, writes the profile object of your posting_json_metadata (EditProfileDialog.js:583-594, 960-986; Data Model):

Field on screen Stored key Rule in the app What Hivemind serves of it
Display name profile.name free text The first 20 characters
Biography profile.about free text 160 characters
Location profile.location free text 30
Website profile.website a valid URL Up to 100 characters; longer, nothing
Profile picture profile.profile_image A pixel-art file of at most 48,000 bytes, stored inside the metadata as a data URI, not uploaded anywhere (EditProfileDialog.js:773) Nothing. Hivemind keeps a picture only when it is an http(s):// address of at most 1,024 characters, so bridge.get_profile returns an empty profile_image for every Pixagram account; the app reads the picture from condenser_api.get_accounts instead (extract_profile_metadata.sql:110-115)
Addresses, links, contacts profile.addresses, profile.links, profile.contacts lists of name and value pairs Pixagram-only keys; other apps ignore them

What the operation does and costs:

  • One account_update2 operation, which merges the new profile into the existing posting_json_metadata so other keys survive, and re-sends the account's json_metadata unchanged (pixaproxyapi.js:5549-5590).
  • It asks for your active key, although the dialog first checks that your posting key is unlocked (EditProfileDialog.js:925-931). The reason is the re-sent json_metadata: an account_update2 that carries json_metadata needs the active authority, while one that carries only posting_json_metadata needs posting (Operations Reference). Leaving json_metadata out would let the profile be saved with the posting key.
  • It is public and permanent. Every version of the profile stays in the block log. Do not put a phone number or an address you would not print.
  • No cover image. The dialog has no field for one, and the app shows none.
  • Resource Credits: the operation's size, which the picture dominates: a 48,000-byte picture is about 64,000 bytes once encoded as a data URI, the largest routine operation an account sends after an artwork (Resource Credits).

Other apps that read Hive profiles through Hivemind (name, about, location, website, profile_image) will show a Pixagram profile cut to Hivemind's lengths and without its picture; an app that reads posting_json_metadata from hived gets everything, with a data-URI picture it may or may not render.

What the chain, the indexer and the app each decide

Behaviour Chain Indexer App
Profile fields' existence and content yes, as metadata
Profile length limits, and the dropped picture yes, when serving
Which key saves a profile yes, by what the operation carries yes, by what it sends
Every setting under the gear yes, per browser
NSFW filtering and the on-device models yes

Inherited → changed

Aspect Hive front ends Pixagram
Profile storage posting_json_metadata.profile the same keys, plus addresses, links, contacts
Profile picture a URL a data URI of pixel art, at most 48,000 bytes
Cover image profile.cover_image none
Preferences on chain some front ends keep them in posting_json_metadata none; all in the browser
NSFW setting per user, often in the profile per browser

Sources