セルフホスティング(英: Self-hosting)は、ツール群やオペレーティングシステムの一部であるプログラムを使って、同じプログラムの新しいバージョンを作ることを指す。例えば、コンパイラでそのコンパイラ自身のソースコードをコンパイルすることなどを意味する。セルフホスティング・ソフトウェアはパーソナルコンピュータや大型のシステムでよく使われる。その他にセルフホスティングとなっている典型例としては、カーネル、アセンブラ、シェルなどがある。 全くソフトウェアが書かれていない新しいシステムの場合、ソフトウェアは別のセルフホスティングシステム上で開発され、ターゲットの新システムが読み取れる記憶装置に格納される。この形態の開発は、ターゲットシステムがある程度の信頼性を持って自身の開発に利用できるようになるまで続けられる。例えば、Linuxオペレーティングシステムの開発は、当初MINIXシステム上で