Trong lập trình, minification (còn được gọi là minimisation hoặc minimization) là quá trình loại bỏ các ký tự không cần thiết từ mã nguồn hoặc chương trình thông dịch hoặc ngôn ngữ đánh dấu mà không thay đổi chức năng của nó. Các ký tự không cần thiết thường là ký tự khoảng trắng, dấu xuống dòng, comment, và đôi khi là cả dấu phân cách khối, thường được sử dụng để tăng thêm khả năng đọc cho mã nguồn, không có tác dụng để chạy. Minification giảm kích thước của mã nguồn, khiến cho việc truyền tải nó qua một mạng lưới (ví dụ như Internet) trở nên hiệu quả hơn. Trong văn hóa lập trình, việc hướng tới mã nguồn được tối giản hết mức là mục tiêu của các cuộc thi code golf. Minification khác với nén dữ liệu ở chỗ mã nguồn được thu gọn có thể được diễn giải ngay lập tức mà không cần bước giải nén: cùng một trình thông dịch có thể làm việc với cả mã nguồn gốc cũng như với mã nguồn được thu gọn. Mục tiêu của minification không giống với obfuscation; mã nguồn minified có thể trở về mã nguồn ban đầu bằng các công cụ làm đẹp mã nguồn (pretty-printer) hoặc các công cụ unminifer. Tuy nhiên, để đạt được mục tiêu, minification đôi khi vẫn sử dụng các kỹ thuật cũng được sử dụng bởi kỹ thuật obfuscation; ví dụ như việc rút ngắn tên biến và tái cấu trúc mã nguồn. Các công cụ làm đẹp mã hoặc unminifier chỉ có thể đảo ngược hoàn toàn quá trình thu gọn nếu chúng được cung cấp thông tin chi tiết về các chuyển đổi do chính các kỹ thuật đó thực hiện. Khi thiếu thông tin về các thao tác thu gọn, mã nguồn được đảo ngược sẽ sử dụng tên biến và luồng điều khiển khác, nhưng vẫn giữ nguyên chức năng như mã nguồn ban đầu.