Faktor terbesar yang menentukan warna asteroid adalah komposisi penyusunnya. Sama seperti batuan di Bumi yang memiliki warna berbeda karena mengandung mineral tertentu, asteroid juga demikian. Asteroid dikelompokkan ke dalam beberapa jenis berdasarkan spektrum cahaya yang dipantulkannya. Dari klasifikasi tersebut, muncul beberapa tipe utama.
Asteroid tipe C (carbonaceous) merupakan jenis yang paling banyak ditemukan, bahkan mencapai lebih dari 75 persen asteroid yang telah diketahui. Asteroid ini kaya akan karbon, mineral lempung, dan batuan silikat. Kandungan karbon yang tinggi membuatnya menyerap sebagian besar cahaya Matahari, sehingga tampak sangat gelap, mulai dari abu-abu tua hingga hampir hitam.
Sementara itu, asteroid tipe S (silicaceous) didominasi oleh mineral silikat, besi, dan nikel. Warnanya cenderung lebih terang dibanding tipe C. Tergantung komposisi mineralnya, asteroid jenis ini bisa tampak abu-abu terang, kehijauan, hingga sedikit kemerahan.
Ada pula asteroid tipe M (metallic) yang diduga tersusun terutama dari logam besi dan nikel. Dalam sejumlah pengamatan, asteroid logam ini terlihat memiliki rona kemerahan yang khas.
Perbedaan komposisi tersebut membuat dua asteroid yang berukuran sama bisa terlihat sangat berbeda. Ibarat membandingkan bongkahan batu bara dengan bijih besi di Bumi, keduanya tentu memiliki warna yang tidak sama meskipun sama-sama merupakan batuan.