I used Oxygen Builder for most of my websites over the last five years or so. Since updating my tech stack to build WordPress site with Bricks Builder, I have slowly been migrating my sites from Oxygen over to Bricks.
My workflow was to migrate from Oxygen Builder To Bricks is as follows:
- Clone the website and database to a testing subdomain
- Rebuild all templates and pages with Bricks
- Clean up the database to remove as many Oxygen references as possible
Cleaning up the database is always a stressful, difficult, and time consuming task.
If you make one small mistake, you can crash your site and potentially force yourself to start over.
That being said, always take a backup before you start editing your WP database. I even will take multiple backups after completing successful SQL commands to create checkpoints, kind-of like saving progress in a video game.
Prerequisites To Clean Up Your Database
Before you can start the task of cleaning your database, you need a tool to access the database. I prefer phpMyAdmin but AdminerNeo works too. Talk to your hosting provider to learn ways you can view your WP database. Once you have access, take some time to study up on the WP Schema and SQL.
I promise that the WP database and SQL are not as hard to learn as some people make it sound. As long as you have a backup, you can break your testing environments and roll back to a working version!
Always work on a test environment!
How To Clean Up The WP Database When Migrating From Oxygen Builder To Bricks Builder
Migrating from Oxygen Builder to Bricks Builder requires removing database entries created by Oxygen to maintain a clean and efficient site.
Oxygen stores data across multiple locations, including postmeta
, options
, and post content
fields, such as custom meta keys, configuration options, and shortcode blocks.
Identifying and removing this data can be done using direct SQL queries executed through phpMyAdmin or a similar database management tool.
Below is a list of SQL commands that I have put together on my journey purging my WP database of Oxygen records. I will continuously update this post as I discover new SQL queries.
Query wp_postmeta Table
This query searches the wp_postmeta
table for meta keys that match patterns starting with _ct_
or _oxygen_
, and returns a distinct list of matching terms:
SELECT DISTINCT meta_key AS oxygen_term
FROM wp_postmeta
WHERE meta_key LIKE '_ct_%'
OR meta_key LIKE '_oxygen_%';
Query wp_options Table
This query searches the wp_options
table for option names that begin with oxygen_
and returns a distinct list of matching option names. These entries are typically created by Oxygen Builder for storing global settings, templates, and configuration data.
SELECT DISTINCT option_name AS oxygen_term
FROM wp_options
WHERE option_name LIKE 'oxygen_%';
Query post_content From wp_posts Table
This query extracts distinct Oxygen Builder block identifiers from the post_content
field in the wp_posts
table. It searches for content containing <!-- wp:oxygen-vsb/
comments and isolates the component name that follows. This identifies Oxygen block references that may remain embedded in post content.
SELECT DISTINCT
SUBSTRING_INDEX(SUBSTRING_INDEX(post_content, '<!-- wp:oxygen-vsb/', -1), '/', 1) AS oxygen_component
FROM wp_posts
WHERE post_content LIKE '%<!-- wp:oxygen-vsb/%';
Why You Should Clean Up Your Database When Migrating From Oxygen to Bricks
When a site is rebuilt with Bricks Builder, the Oxygen Builder data stored in the database no longer serves any functional purpose.
If this data is not removed, it can cause several issues over time, including
- increased database size
- slower query performance
- conflicts with plugins that interact with postmeta or options
- A dirty database makes future migrations or site maintenance harder.
Residual Oxygen data can also lead to unexpected behavior if Bricks or other plugins attempt to read outdated meta keys or settings. Cleaning the database removes unnecessary overhead and ensures that only relevant and active data remains in the system.
My advice is to take some time learning the WP database, play around in a test environment, and try to keep your database as lean as possible to serve your website and visitors
How To Safely Test and Delete the Data
Deleting database records without testing can easily break core/critical site functionality, corrupt the database content, or crash the entire WP installation.
To prevent these issues, start by taking a full backup of the database before making any changes.
Run SELECT queries first!
This will help you to see exactly which records are likely associated with Oxygen, reducing the risk of accidentally removing unrelated data.
After reviewing and confirming the results, you can use DELETE statements to remove the Oxygen entries in small batches. Testing these changes on a staging or development copy of the site ensures that if any issues occur, they can be identified and corrected without affecting the live site. Only after a successful validation should changes be applied to the production database.
All Above Queries Combined Together in One SQL Command
As a bonus, here are the three queries combined together. This will output a list of many records created by Oxygen that you can search for and delete at your discretion.
SELECT DISTINCT meta_key AS oxygen_term
FROM wp_postmeta
WHERE meta_key LIKE '_ct_%' OR meta_key LIKE '_oxygen_%'
UNION
SELECT DISTINCT option_name AS oxygen_term
FROM wp_options
WHERE option_name LIKE 'oxygen_%'
UNION
SELECT DISTINCT
SUBSTRING_INDEX(SUBSTRING_INDEX(post_content, '<!-- wp:oxygen-vsb/', -1), '/', 1) AS oxygen_term
FROM wp_posts
WHERE post_content LIKE '%<!-- wp:oxygen-vsb/%';
The Output of the Combined SQL Command
oxygen_term |
---|
_ct_template_archive_post_types_all |
_ct_template_categories |
_ct_template_categories_all |
_ct_template_tags |
_ct_template_tags_all |
_ct_template_custom_taxonomies |
_ct_template_custom_taxonomies_all |
_ct_template_authors_archives_all |
_ct_template_index |
_ct_template_front_page |
_ct_template_blog_posts |
_ct_template_date_archive |
_ct_template_search_page |
_ct_template_inner_content |
_ct_template_404_page |
_ct_template_all_archives |
_ct_template_archive_among_taxonomies |
_ct_template_apply_if_archive_among_taxonomies |
_ct_template_archive_post_types |
_ct_template_apply_if_archive_among_cpt |
_ct_template_authors_archives |
_ct_template_apply_if_archive_among_authors |
_ct_template_single_all |
_ct_template_post_types |
_ct_template_exclude_ids |
_ct_template_include_ids |
_ct_template_taxonomies |
_ct_use_template_taxonomies |
_ct_template_post_of_parents |
_ct_template_apply_if_post_of_parents |
_ct_template_order |
_ct_builder_shortcodes |
_oxygen_lock_post_edit_mode |
_ct_preview_url |
_ct_page_settings |
_ct_builder_shortcodes_revisions |
_ct_builder_shortcodes_revisions_dates |
_ct_other_template |
_ct_parent_template |
_ct_template_type |
action_priority |
action_type |
_ct_builder_json |
_ct_connection_page_category |
oxygen-vsb-activated |
oxygen_aos_classes |
oxygen_breakpoints_cache_update_required |
oxygen_global_colors_cache_update_required |
oxygen_gutenberg_license_key |
oxygen_gutenberg_license_status |
oxygen_license_key |
oxygen_license_status |
oxygen_license_updated |
oxygen_options_autoload |
oxygen_private_key |
oxygen_rewrite_rules_updated |
oxygen_vsb_access_role_author |
oxygen_vsb_access_role_contributor |
oxygen_vsb_access_role_editor |
oxygen_vsb_access_role_subscriber |
oxygen_vsb_block_category_label |
oxygen_vsb_codemirror_theme |
oxygen_vsb_codemirror_wrap |
oxygen_vsb_comments_list_templates |
oxygen_vsb_connection_access_key |
oxygen_vsb_css_cache_generated_2_2 |
oxygen_vsb_css_files_state |
oxygen_vsb_disable_embeds |
oxygen_vsb_disable_emojis |
oxygen_vsb_disable_google_fonts |
oxygen_vsb_disable_jquery_migrate |
oxygen_vsb_easy_posts_templates |
oxygen_vsb_element_presets |
oxygen_vsb_enable_3rdp_designsets |
oxygen_vsb_enable_connection |
oxygen_vsb_enable_default_designsets |
oxygen_vsb_enable_google_fonts_cache |
oxygen_vsb_enable_ie_layout_improvements |
oxygen_vsb_enable_selector_detector |
oxygen_vsb_enable_signature_frontend_errors |
oxygen_vsb_enable_signature_validation |
oxygen_vsb_full_page_block_category_label |
oxygen_vsb_global_colors |
oxygen_vsb_google_fonts_cache |
oxygen_vsb_google_maps_api_key |
oxygen_vsb_history_limit |
oxygen_vsb_ignore_post_type_affiliate-links-cpt |
oxygen_vsb_ignore_post_type_car |
oxygen_vsb_ignore_post_type_drone |
oxygen_vsb_ignore_post_type_feedzy_categories |
oxygen_vsb_ignore_post_type_feedzy_imports |
oxygen_vsb_ignore_post_type_helicopter |
oxygen_vsb_ignore_post_type_mb-post-type |
oxygen_vsb_ignore_post_type_mb-relationship |
oxygen_vsb_ignore_post_type_mb-settings-page |
oxygen_vsb_ignore_post_type_mb-taxonomy |
oxygen_vsb_ignore_post_type_mb-views |
oxygen_vsb_ignore_post_type_meta-box |
oxygen_vsb_ignore_post_type_news |
oxygen_vsb_ignore_post_type_ninja-table |
oxygen_vsb_ignore_post_type_oxy_user_library |
oxygen_vsb_ignore_post_type_page |
oxygen_vsb_ignore_post_type_plane |
oxygen_vsb_ignore_post_type_post |
oxygen_vsb_ignore_post_type_rank_math_schema |
oxygen_vsb_ignore_post_type_rc-car-track |
oxygen_vsb_ignore_post_type_rc-cars |
oxygen_vsb_ignore_post_type_rc-locations |
oxygen_vsb_ignore_post_type_rc-planes |
oxygen_vsb_ignore_post_type_rm_content_editor |
oxygen_vsb_ignore_post_type_scheduled-action |
oxygen_vsb_ignore_post_type_user_request |
oxygen_vsb_ignore_post_type_wpcb_snippet_folder |
oxygen_vsb_ignore_post_type_wpcb_snippet_post |
oxygen_vsb_ignore_post_type_wp_block |
oxygen_vsb_ignore_post_type_wp_font_face |
oxygen_vsb_ignore_post_type_wp_font_family |
oxygen_vsb_ignore_post_type_wp_global_styles |
oxygen_vsb_ignore_post_type_wp_navigation |
oxygen_vsb_ignore_post_type_wp_template |
oxygen_vsb_ignore_post_type_wp_template_part |
oxygen_vsb_is_agency_bundle |
oxygen_vsb_is_composite_elements_agency_bundle |
oxygen_vsb_last_save_time |
oxygen_vsb_latest_typekit_fonts |
oxygen_vsb_load_aos_in_head |
oxygen_vsb_number_of_daily_revisions |
oxygen_vsb_number_of_latest_revisions |
oxygen_vsb_options_role_access_advanced_tab |
oxygen_vsb_options_role_access_disable_classes |
oxygen_vsb_options_role_access_disable_ids |
oxygen_vsb_options_role_access_drag_n_drop |
oxygen_vsb_options_role_access_enabled_elements |
oxygen_vsb_options_role_access_enable_elements |
oxygen_vsb_options_users_access_advanced_tab |
oxygen_vsb_options_users_access_disable_classes |
oxygen_vsb_options_users_access_disable_ids |
oxygen_vsb_options_users_access_drag_n_drop |
oxygen_vsb_options_users_access_enabled_elements |
oxygen_vsb_options_users_access_enable_elements |
oxygen_vsb_options_users_access_list |
oxygen_vsb_presets_updated_3_3 |
oxygen_vsb_presets_updated_3_4 |
oxygen_vsb_preview_dropdown_exclude_non_public |
oxygen_vsb_preview_dropdown_limit |
oxygen_vsb_screenshot_generate_url |
oxygen_vsb_show_all_acf_fields |
oxygen_vsb_site_screenshot |
oxygen_vsb_source_sites |
oxygen_vsb_universal_css_cache |
oxygen_vsb_universal_css_cache_success |
oxygen_vsb_universal_css_latest_version |
oxygen_vsb_universal_css_url |
oxygen_vsb_update_3_6 |
oxygen_vsb_update_3_7 |
oxygen_vsb_update_4_0_shortcodes_signed |
oxygen_vsb_update_4_9 |
oxygen_vsb_use_css_for_google_fonts |
ovsb-faq-section |
ovsb-pro-media-player |
DELETE Queries for all SELECT Queries in this Article
Make sure you are confident in your select queries before running the delete queries. If you make a mistake, restore the database from your backup.
Delete From wp_postmeta Table
After verifying the records returned by the SELECT, you can remove Oxygen-related meta keys from the wp_postmeta
table with:
DELETE FROM wp_postmeta
WHERE meta_key LIKE 'ct%'
OR meta_key LIKE 'oxygen%';
Delete From wp_options Table
To remove Oxygen-related options from the wp_options
table:
DELETE FROM wp_options
WHERE option_name LIKE 'oxygen_%';
Clean Up post_content in wp_posts Table
There is no simple DELETE query for cleaning post_content
, because Oxygen Builder shortcodes are embedded within post bodies. Instead, you must update the post_content
to remove specific Oxygen blocks.
A safe method is to target and replace Oxygen blocks with an empty string, for example:
UPDATE wp_posts
SET post_content = REPLACE(post_content, '<!-- wp:oxygen-vsb/', '<!-- oxygen-block-removed/')
WHERE post_content LIKE '%<!-- wp:oxygen-vsb/%';
Conclusion
Oxygen Builder stores a large amount of data across the WordPress database, even after you delete the plugin from your site.
Leaving this data in place can result in performance issues, plugin conflicts, and long-term maintenance challenges.
By identifying and removing these records using targeted SQL queries, you can ensure a cleaner, more efficient environment for Bricks Builder to operate in.
As with any direct database operation, testing on a staging site and taking backups at each step is essential. This cleanup process isn’t just about removing clutter — it’s about reducing risk, improving performance, and maintaining full control over your site’s structure moving forward.
Need Help With Bricks Builder?