Penyebab muntah darah terutama dibagi menjadi faktor lokal dan sistemik. Faktor lokal: 1. Pendarahan dari rongga mulut dan gusi, beberapa orang akan bangun di pagi hari dan muntah darah. 2. Penyakit pernapasan, yang paling umum adalah bronkiektasis kering dan TBC, kanker paru-paru, sebagian besar pasien ini mengalami batuk intermiten dan batuk darah, tetapi beberapa di antaranya muncul dengan gejala muntah darah secara langsung. 3. Penyakit pencernaan, yang paling umum adalah tukak lambung, Ulkus duodenum, ulkus darurat, gastritis erosif akut, kanker lambung, pasien-pasien ini biasanya memiliki gejala gangguan pencernaan di perut atau ketidaknyamanan epigastrium berulang. Selain muntah darah setelah pecahnya perdarahan dari varises esofagus dan varises fundus lambung, hal ini umumnya terkait dengan sirosis setelah menderita hepatitis B dan hati alkoholik. Muntah darah juga bisa terjadi dengan pendarahan berat dari saluran empedu. Faktor sistemik seperti gangguan hematologi, termasuk hemofilia, leukemia, trombositopenia dan berbagai gangguan koagulasi dapat menyebabkan hematemesis.