diff --git a/packages/desktop-client/src/components/budget/misc.js b/packages/desktop-client/src/components/budget/misc.js
index d32090b7aad1ab61dc04d31ea195d90329d31f69..7ad19deb53923932ffc2d980fa5a1255669846a4 100644
--- a/packages/desktop-client/src/components/budget/misc.js
+++ b/packages/desktop-client/src/components/budget/misc.js
@@ -181,6 +181,15 @@ class BudgetTable extends Component {
     });
   };
 
+  expandAllCategories = () => {
+    this.props.setCollapsed([]);
+  };
+
+  collapseAllCategories = () => {
+    let { setCollapsed, categoryGroups } = this.props;
+    setCollapsed(categoryGroups.map(g => g.id));
+  };
+
   render() {
     let {
       type,
@@ -253,6 +262,8 @@ class BudgetTable extends Component {
           <BudgetTotals
             MonthComponent={dataComponents.BudgetTotalsComponent}
             toggleHiddenCategories={this.toggleHiddenCategories}
+            expandAllCategories={this.expandAllCategories}
+            collapseAllCategories={this.collapseAllCategories}
           />
           <IntersectionBoundary.Provider value={this.budgetCategoriesRef}>
             <View
@@ -658,6 +669,8 @@ function RenderMonths({ component: Component, editingIndex, args, style }) {
 const BudgetTotals = memo(function BudgetTotals({
   MonthComponent,
   toggleHiddenCategories,
+  expandAllCategories,
+  collapseAllCategories,
 }) {
   const [menuOpen, setMenuOpen] = useState(false);
   return (
@@ -714,13 +727,25 @@ const BudgetTotals = memo(function BudgetTotals({
                 onMenuSelect={type => {
                   if (type === 'toggleVisibility') {
                     toggleHiddenCategories();
+                  } else if (type === 'expandAllCategories') {
+                    expandAllCategories();
+                  } else if (type === 'collapseAllCategories') {
+                    collapseAllCategories();
                   }
                   setMenuOpen(false);
                 }}
                 items={[
                   {
                     name: 'toggleVisibility',
-                    text: 'Toggle hidden categories',
+                    text: 'Toggle hidden',
+                  },
+                  {
+                    name: 'expandAllCategories',
+                    text: 'Expand all',
+                  },
+                  {
+                    name: 'collapseAllCategories',
+                    text: 'Collapse all',
                   },
                 ]}
               />
diff --git a/upcoming-release-notes/1143.md b/upcoming-release-notes/1143.md
new file mode 100644
index 0000000000000000000000000000000000000000..8a6bd5fb88480223b4ef19e0181e6d314c2f0abd
--- /dev/null
+++ b/upcoming-release-notes/1143.md
@@ -0,0 +1,6 @@
+---
+category: Enhancements
+authors: [joel-jeremy]
+---
+
+Expand / collapse all categories