class praw.models.Preferences(reddit)

A class for Reddit preferences.

The Preferences class provides access to the Reddit preferences of the currently authenticated user.


Return the preference settings of the authenticated user as a dict.

This method is intended to be accessed as reddit.user.preferences() like so:

preferences = reddit.user.preferences()

See for the list of possible values.


Create a Preferences instance.

Parameters:reddit – The Reddit instance.

Modify the specified settings.

  • 3rd_party_data_personalized_ads – Allow Reddit to use data provided by third-parties to show you more relevant advertisements on Reddit (boolean).
  • 3rd_party_site_data_personalized_ads – Allow personalization of advertisements using third-party website data (boolean).
  • 3rd_party_site_data_personalized_content – Allow personalization of content using third-party website data (boolean).
  • activity_relevant_ads – Allow Reddit to use your activity on Reddit to show you more relevant advertisements (boolean).
  • allow_clicktracking – Allow Reddit to log my outbound clicks for personalization (boolean).
  • beta – I would like to beta test features for Reddit (boolean).
  • clickgadget – Show me links I’ve recently viewed (boolean).
  • collapse_read_messages – Collapse messages after I’ve read them (boolean).
  • compress – Compress the link display (boolean).
  • creddit_autorenew – Use a creddit to automatically renew my gold if it expires (boolean).
  • default_comment_sort – Default comment sort (one of 'confidence', 'top', 'new', 'controversial', 'old', 'random', 'qa', 'live').
  • domain_details – Show additional details in the domain text when available, such as the source subreddit or the content author’s url/name (boolean).
  • email_digests – Send email digests (boolean).
  • email_messages – Send messages as emails (boolean).
  • email_unsubscribe_all – Unsubscribe from all emails (boolean).
  • enable_default_themes – Use reddit theme (boolean).
  • g – Location (one of 'GLOBAL', 'US', 'AR', 'AU', 'BG', 'CA', 'CL', 'CO', 'HR', 'CZ', 'FI', 'GR', 'HU', 'IS', 'IN', 'IE', 'JP', 'MY', 'MX', 'NZ', 'PH', 'PL', 'PT', 'PR', 'RO', 'RS', 'SG', 'SE', 'TW', 'TH', 'TR', 'GB', 'US_WA', 'US_DE', 'US_DC', 'US_WI', 'US_WV', 'US_HI', 'US_FL', 'US_WY', 'US_NH', 'US_NJ', 'US_NM', 'US_TX', 'US_LA', 'US_NC', 'US_ND', 'US_NE', 'US_TN', 'US_NY', 'US_PA', 'US_CA', 'US_NV', 'US_VA', 'US_CO', 'US_AK', 'US_AL', 'US_AR', 'US_VT', 'US_IL', 'US_GA', 'US_IN', 'US_IA', 'US_OK', 'US_AZ', 'US_ID', 'US_CT', 'US_ME', 'US_MD', 'US_MA', 'US_OH', 'US_UT', 'US_MO', 'US_MN', 'US_MI', 'US_RI', 'US_KS', 'US_MT', 'US_MS', 'US_SC', 'US_KY', 'US_OR', 'US_SD').
  • hide_ads – Hide ads (boolean).
  • hide_downs – Don’t show me submissions after I’ve downvoted them, except my own (boolean).
  • hide_from_robots – Don’t allow search engines to index my user profile (boolean).
  • hide_locationbar – Hide location bar (boolean).
  • hide_ups – Don’t show me submissions after I’ve upvoted them, except my own (boolean).
  • highlight_controversial – Show a dagger on comments voted controversial (boolean).
  • highlight_new_comments – Highlight new comments (boolean).
  • ignore_suggested_sort – Ignore suggested sorts (boolean).
  • in_redesign_beta – In redesign beta (boolean).
  • label_nsfw – Label posts that are not safe for work (boolean).
  • lang – Interface language (IETF language tag, underscore separated).
  • legacy_search – Show legacy search page (boolean).
  • live_orangereds – Send message notifications in my browser (boolean).
  • mark_messages_read – Mark messages as read when I open my inbox (boolean).
  • media – Thumbnail preference (one of 'on', 'off', 'subreddit').
  • media_preview – Media preview preference (one of 'on', 'off', 'subreddit').
  • min_comment_score – Don’t show me comments with a score less than this number (int between -100 and 100).
  • min_link_score – Don’t show me submissions with a score less than this number (int between -100 and 100).
  • monitor_mentions – Notify me when people say my username (boolean).
  • newwindow – Open links in a new window (boolean).
  • no_profanity – Don’t show thumbnails or media previews for anything labeled NSFW (boolean).
  • no_video_autoplay – Don’t autoplay Reddit videos on the desktop comments page (boolean).
  • num_comments – Display this many comments by default (int between 1 and 500).
  • numsites – Number of links to display at once (int between 1 and 100).
  • organic – Show the spotlight box on the home feed (boolean).
  • other_theme – Subreddit theme to use (subreddit name).
  • over_18 – I am over eighteen years old and willing to view adult content (boolean).
  • private_feeds – Enable private RSS feeds (boolean).
  • profile_opt_out – View user profiles on desktop using legacy mode (boolean).
  • public_votes – Make my votes public (boolean).
  • research – Allow my data to be used for research purposes (boolean).
  • search_include_over_18 – Include not safe for work (NSFW) search results in searches (boolean).
  • show_flair – Show user flair (boolean).
  • show_gold_expiration – Show how much gold you have remaining on your userpage (boolean).
  • show_link_flair – Show link flair (boolean).
  • show_promote – Show promote (boolean).
  • show_stylesheets – Allow subreddits to show me custom themes (boolean).
  • show_trending – Show trending subreddits on the home feed (boolean).
  • store_visits – Store visits (boolean)
  • theme_selector – Theme selector (subreddit name).
  • threaded_messages – Show message conversations in the inbox ( boolean).
  • threaded_modmail – Enable threaded modmail display (boolean).
  • top_karma_subreddits – Top karma subreddits (boolean).
  • use_global_defaults – Use global defaults (boolean).

Additional keyword arguments can be provided to handle new settings as Reddit introduces them.

See for the most up-to-date list of possible parameters.

This is intended to be used like so:


This method returns the new state of the preferences as a dict, which can be used to check whether a change went through.

original_preferences = reddit.user.preferences()
new_preferences = reddit.user.preferences.update(invalid_param=123)
print(original_preferences == new_preferences)  # True, no change


Passing an unknown parameter name or an illegal value (such as an int when a boolean is expected) does not result in an error from the Reddit API. As a consequence, any invalid input will fail silently. To verify that changes have been made, use the return value of this method, which is a dict of the preferences after the update action has been performed.

Some preferences have names that are not valid keyword arguments in Python. To update these, construct a dict and use ** to unpack it as keyword arguments:

     **{'3rd_party_data_personalized_ads': False})