Accents: é, è, ê and the others
French accents never mark stress; they show the quality of a vowel or tell two words apart. On e they matter most: é is a closed 'ay' (été), while è and ê are an open 'eh' (père, fête). On a, i, o and u they rarely change the sound, ô being the main exception, but they separate words in writing, such as a (has) and à (to), ou (or) and où (where), sur (on) and sûr (sure). A circumflex often marks an s that has dropped out of the spelling, which can help you guess a word: hôpital, forêt, île. Whatever the accents, French puts no strong stress on any syllable, just a slight lift at the end of a phrase.
The diaeresis: two dots that split a pair
The two dots, called tréma, tell you to pronounce a vowel separately from the one before it, where the two would normally merge into one sound. Without them, mais is 'meh' (but); with them, maïs is 'mah-ees' (corn). Noël has two syllables for the same reason, and in aigüe the dots show that the u is sounded rather than just keeping the g hard. The dotted letter keeps its usual sound; what changes is how the letters group.
The cedilla: a c that sounds like s
A plain c is hard before a, o and u, as in café and cou, so French adds a small hook, ç, whenever it needs an s sound in that position. That's why the verb commencer becomes nous commençons, and why garçon and reçu are read with an s. You'll never see the cedilla before e or i, where c is already soft.
Œ and æ: two letters written as one
œ is o and e joined together, and you'll mostly meet it in œu, read 'ö' as in cœur, sœur and œuf, and in œil (eye), read 'öy'. In a few learned words from Greek it's 'ay', as in œsophage. æ is rarer still, kept in Latin expressions like curriculum vitæ, and it's read 'ay' as well. People often type oe and ae when their keyboard lacks the joined letters, but the word is read the same way.
C and g before e, i and y
Before a, o and u, and before consonants, c is a k and g is hard: car, gare, gros. Before e, i and y, c softens to s (cinéma, ceci) and g to the zh of 'measure' (gilet, rouge, gym). To keep g hard before e or i, French slips in a silent u, as in guerre and guide. To make c or g soft before a, o or u, it writes ç or adds a silent e: commençons, mangeons ('mahⁿ-zhohⁿ').
Vowel pairs that make one sound
French often writes a single vowel sound with two or three letters, and the letters lose their own values. ai and ei are 'eh' (lait, neige), au and eau are 'oh' (chaud, beau), ou is 'oo' (tout), oi is 'wah' (moi) and eu is the rounded 'ö' (deux). Read the group as a block: bateau has no a-u or e-a-u to sound out, just 'bah-toh'. Only a diaeresis, as in naïf, splits a pair apart.
Nasal vowels: a vowel before n or m
When n or m follows a vowel and isn't followed by another vowel, the n or m itself isn't pronounced; instead the vowel is said with air coming through the nose. Everyday French has three of these: 'ahⁿ' in an and en (enfant), 'ohⁿ' in on (bon), and 'ehⁿ' in in, ain, ein and, for most speakers, un (vin, pain, plein, brun). Don't add an n or the ng of 'song' at the end; the vowel simply stops. If a vowel or a second n or m follows, there's no nasal at all and you hear the consonant, so bon is 'bohⁿ' but bonne is 'bon', and plein is 'plehⁿ' but pleine is 'plehn'. Before b and p the n is written m, as in chambre, simple and nombre.
Consonant pairs that make one sound
Several pairs of consonants stand for a single sound. ch is 'sh' (chat), gn is 'ny' (montagne), ph is 'f' (photo), th is a plain t (thé), and qu is a k with no w after it (qui, quatre). gu before e or i is a hard g whose u is silent (guerre), and ss is always 's' (poisson). sh only turns up in borrowed words such as shampooing, where it keeps its English sound.
Glides: i, u and ou before a vowel
When i, u or ou comes right before another vowel, it usually shrinks into a quick glide, and the two vowels make one syllable. i becomes a y (pied, 'pyay'), ou becomes a w (oui, 'wee'), and u becomes a ü said very quickly, as in nuit ('nüee'). Keep the last two apart: huit (eight) starts with the ü glide, while oui (yes) starts with a w. Between two vowels, y counts as an i plus a glide, so crayon is 'kreh-yohⁿ' and voyage is 'vwah-yahzh'.
il and ill: an l that sounds like y
After a vowel, il at the end of a word and ill before a vowel usually stand for a y sound, not an l: travail ('trah-vahy'), soleil, fauteuil, bouteille, feuille. After a consonant, ill is ee followed by y, as in fille ('feey') and famille. The l is heard in only a few common words, such as ville, mille and tranquille, and in short words like il, fil and avril. Faced with an unfamiliar word containing ill, the y reading is the safe bet.
One s or two
A single s between two vowels sounds like z: rose ('rohz'), maison ('meh-zohⁿ'), cousin ('koo-zehⁿ'). Doubled, it's a plain s: poisson, russe, coussin ('koo-sehⁿ'). Plenty of word pairs differ only in this, such as poison and poisson, désert and dessert, cousin and coussin. At the start of a word, or next to a consonant, s is always a plain s, as in salut and penser.
The silent e
An e without an accent at the end of a word is silent: table is 'tahbl' and porte is 'port', and in petite its only job is to make the t heard ('puh-teet', against 'puh-tee' for petit). Inside a word and in short words like le, de and je it's a light 'uh', which often drops out in everyday speech, so samedi sounds like 'sahm-dee'. The plural ending -es is silent too, and so is the -ent of verbs: ils parlent sounds exactly like il parle. A final e that is pronounced 'ay' always carries an accent, as in café and été.
Silent final consonants
Most consonants at the end of a word are silent: grand, petit, trop, deux, les, chez. The usual exceptions are c, r, f and l, which are often pronounced (sac, mer, neuf, sel); the English word 'careful' contains all four and makes a handy reminder. Even those have exceptions, above all the r of -er verbs, so parler is 'pahr-lay'. A silent consonant can come back to life in liaison or in the feminine, which is why petit ends in 'ee' and petite in 'eet'.
The silent h
French h is never pronounced: homme is 'om', hiver is 'ee-vehr', and thé is just 'tay'. Most words beginning with h behave as if they began with a vowel, so you get l'homme and les hommes ('lay-zom'). A smaller group, marked as h aspiré in dictionaries, is just as silent but blocks those links: le héros, les haricots ('lay ah-ree-koh'), with no l' and no z. They're mostly words of Germanic origin, and they're best learned as you meet them.
Liaison: silent letters that come back
A final consonant that is normally silent is pronounced when the next word begins with a vowel or a silent h, and it attaches itself to that word. s and x are heard as z (les amis, 'lay-zah-mee'; deux heures, 'dö-zör'), t stays t (petit ami, 'puh-tee-tah-mee'), and d becomes t (grand homme, 'grahⁿ-tom'). Liaison is required between an article or a pronoun and the word it belongs to (les enfants, nous avons), never made after et (and), and optional in many other places. That's why vous is 'voo' on its own but 'voo-zeht' in vous êtes.
-tion: an s, not 'shun'
The ending -tion is read 'syohⁿ': nation ('nah-syohⁿ'), attention, information. English turns the same words into 'shun', and that's the habit to drop. When a vowel follows, as in national or fonctionner, the nasal opens into 'syon' with a real n. After s the t keeps its t sound: question ('kehs-tyohⁿ'), digestion.
Consonant clusters: two consonants, no vowel between
French often puts two consonants side by side with no vowel between them: b, c, f, g or p followed by l, and b, c, d, f, g, p, t or v followed by r, as in bleu, classe, gris, prix and train. Say each pair as one tight group, the way English does in 'blue' or 'grey', and don't slip a little 'uh' in between: bras is a single syllable, 'brah'. In the r groups the r is the French r from the throat, and after p, t, c and f it loses its voice and comes out as a light rasp, as in prix and trop. The t and d stay clean as well, with none of the ch or j sound English gives 'tree' and 'dream', so drap is 'drah' and triste is 'treest'. At the end of a word the e after a cluster is silent but the cluster is still said in full: table is 'tahbl' and livre is 'leevr', never 'tay-bul' or 'lee-ver'.