Local elections were held in Portugal on 14 December 1997. The elections consisted of three separate elections in the 305 Portuguese municipalities, the election for the Municipal Chambers, another election for the Municipal Assembly and a last one for the lower-level Parish Assembly, whose winner is elected parish president. This last was held separately in the more than 4,200 parishes around the country.

The Socialist Party (PS) remained the largest local political force, although only just, winning 128 cities, one more compared to 1993, and increasing their vote share to above 41 percent. In reality, PS and PSD basically tied in this elections, but the Socialists were able to hold on to big cities like Lisbon, Porto, Sintra and Coimbra. On the other hand, the PS lost some important cities to the PSD, particularly Vila Nova de Gaia and Figueira da Foz, the latter won by Pedro Santana Lopes, future Lisbon mayor and Prime Minister.

The Social Democratic Party (PSD) made some gains, winning 11 cities and basically catching up with the Socialists. They also increased their vote share to 35 percent. The PSD gained many cities from the PS, such as Bragança, Covilhã, Silves, Tavira and Alcobaça. Although the PSD didn't performed very strongly in the big urban centers, they performed extremely well in many medium and small cities across the country, but this same poor performance in large urban centers, such as Lisbon and Porto, generated criticism towards the leadership of Marcelo Rebelo de Sousa.

The election was quite bad for Democratic Unity Coalition (CDU), as they continued their fall in local politics. The Communist/Green coalition lost 8 cities and decreased their vote share to 12 percent. The CDU lost many of their bastions to the PS, such as Cuba, Amadora, Vila Franca de Xira and Sesimbra. They also saw a decrease in number of councillors, although here the fall was softer, as they lost just 10 councillors compared to 1993.

The People's Party (CDS–PP) also continued its decline in local politics. The party only won 8 cities, a fall of 5 cities, and dropped in vote share to the lowest level till that time, 5.7 percent. They lost cities like Aveiro to the PS, and Vila Verde to the PSD. One surprise in the elections was the victory of the People's Monarchist Party (PPM) in Penalva do Castelo, Viseu district, over the People's Party.

Turnout in these elections dropped in comparison with the 1993 election, as 60.1 percent of the electorate cast a ballot.

Background Electoral system All 305 municipalities are allocated a certain number of councilors to elect corresponding to the number of registered voters in a given municipality. Each party or coalition must present a list of candidates. The winner of the most voted list for the municipal council is automatically elected mayor, similar to first-past-the-post (FPTP). The lists are closed and the seats in each municipality are apportioned according to the D'Hondt method.Eleição dos titulares dos órgãos das autarquias locais. Diário da República (in Portuguese.) Retrieved 17 July 2025.

By-elections (1993–1997) During the normal four-year term of local governments, one municipal council by-election was held in the municipality of Albufeira on 21 January 1996, adding to this, fifteen parishes also held a by-election for parish assemblies.

+City control in by-elections (1993–1997)Date Municipality Population Previous control New control21 January 1996Albufeira20,949Socialist Party (PS)Socialist Party (PS)

Parties The main political forces involved in the election were:

CDS – People's Party (CDS–PP) (only in some municipalities)1, Unitary Democratic Coalition (CDU)2 Socialist Party (PS)2 Social Democratic Party (PSD) (only in some municipalities)1 People's Monarchist Party (PPM)

1 The PSD and the CDS–PP formed coalitions in some municipalities. 2 The PS formed a coalition with CDU and UDP in Lisbon.

Results Municipal Councils National summary of votes and seats

! rowspan="2" colspan=2 style="background-color:#E9E9E9" align=left|Parties ! rowspan="2" style="background-color:#E9E9E9" align=right|Votes ! rowspan="2" style="background-color:#E9E9E9" align=right|% ! rowspan="2" style="background-color:#E9E9E9" align=right|±pp swing ! rowspan="2" style="background-color:#E9E9E9" align=right|Candidacies ! colspan="2" style="background-color:#E9E9E9" align="center"|Councillors ! colspan="2" style="background-color:#E9E9E9" align="center"|Mayors |- style="background-color:#E9E9E9" ! style="background-color:#E9E9E9" align="center"|Total ! style="background-color:#E9E9E9" align="center"|± ! style="background-color:#E9E9E9" align="center"|Total ! style="background-color:#E9E9E9" align="center"|±

|2,041,307||38.07||2.0||303||869||74||127||1

|1,761,383||32.85||0.9||293||803||4||127||11

|643,956||12.01||0.8||300||236||10||41||8

|302,763||5.65||2.8||252||83||50||8||5 |- |style="width: 10px" bgcolor=#FF66FF align="center" | |align=left|PS / CDU / UDP |165,008||3.08||0.8||1||10||7||1||0 |- |style="width: 10px" bgcolor=#FF9900 align="center" | |align=left|Social Democratic / People's |124,859||2.33||—||1||7||—||0||— |- |style="width: 8px" bgcolor=#0093DD align="center" | |align=left|People's / Social Democratic |35,495||0.66||—||1||4||—||0||— |- |style="width: 10px" bgcolor= align="center" | |align=left|Popular Democratic Union |21,079||0.39||0.2||46||0||0||0||0

|18,674||0.35||0.1||22||0||0||0||0 |- |style="width: 8px" bgcolor= align="center" | |align=left|PSR / Politics XXI |9,175||0.17||—||2||0||—||0||—

|9,126||0.17||—||16||0||—||0||—

|7,129||0.13||0.1||5||5||5||1||1

|6,995||0.13||—||1||1||—||0||—

|4,361||0.08||0.1||3||1||1||0||0 |- |style="width: 10px" bgcolor=#000080 align="center" | |align=left|National Solidarity |2,301||0.04||0.5||12||0||3||0||0

|1,884||0.04||0.4||1||2||0||0||0

|1,483||0.03||0.0||2||0||0||0||0

|567||0.01||0.0||1||0||0||0||0

|120||0.00||—||1||0||—||0||— |- |colspan=2 align=left style="background-color:#E9E9E9"|Total valid |width="65" align="right" style="background-color:#E9E9E9"|5,157,665 |width="40" align="right" style="background-color:#E9E9E9"|96.18 |width="40" align="right" style="background-color:#E9E9E9"|0.4 |width="40" align="right" style="background-color:#E9E9E9"|— |width="45" align="right" style="background-color:#E9E9E9"|2,021 |width="45" align="right" style="background-color:#E9E9E9"|10 |width="45" align="right" style="background-color:#E9E9E9"|305 |width="45" align="right" style="background-color:#E9E9E9"|0 |- |colspan=2|Blank ballots |117,360||2.19||0.3||colspan=6 rowspan=4| |- |colspan=2|Invalid ballots |87,584||1.63||0.0 |- |colspan=2 align=left style="background-color:#E9E9E9"|Total |width="65" align="right" style="background-color:#E9E9E9"|5,362,609 |width="40" align="right" style="background-color:#E9E9E9"|100.00 |width="40" align="right" style="background-color:#E9E9E9"| |- |colspan=2|Registered voters/turnout ||8,922,182||60.10||3.3 |- | colspan=11 align=left | Source:

Municipality map

City control The following table lists party control in all district capitals, highlighted in bold, as well as in municipalities above 100,000 inhabitants. Population estimates from the 1991 Census.

Municipality Population Previous control New control Almada 151,783 Unitary Democratic Coalition (CDU) Unitary Democratic Coalition (CDU) Amadora 181,774 Unitary Democratic Coalition (CDU) Socialist Party (PS) Aveiro 66,444 CDS – People's Party (CDS–PP) Socialist Party (PS) Barcelos 111,733 Social Democratic Party (PSD) Social Democratic Party (PSD) Beja 35,827 Unitary Democratic Coalition (CDU) Unitary Democratic Coalition (CDU) Braga 141,256 Socialist Party (PS) Socialist Party (PS) Bragança 33,055 Socialist Party (PS) Social Democratic Party (PSD) Cascais 153,294 Socialist Party (PS) Socialist Party (PS) Castelo Branco 54,310 Social Democratic Party (PSD) Socialist Party (PS) Coimbra 139,052 Socialist Party (PS) Socialist Party (PS) Évora 53,754 Unitary Democratic Coalition (CDU) Unitary Democratic Coalition (CDU) Faro 50,761 Socialist Party (PS) Socialist Party (PS) Funchal 115,403 Social Democratic Party (PSD) Social Democratic Party (PSD) Gondomar 143,178 Social Democratic Party (PSD) Social Democratic Party (PSD) Guarda 38,765 Socialist Party (PS) Socialist Party (PS) Guimarães 157,589 Socialist Party (PS) Socialist Party (PS) Leiria 102,762 Social Democratic Party (PSD) Social Democratic Party (PSD) Lisbon (details) 663,394 PS / CDU / UDP PS / CDU / UDP Loures 322,158 Unitary Democratic Coalition (CDU) Unitary Democratic Coalition (CDU) Matosinhos 151,682 Socialist Party (PS) Socialist Party (PS) Oeiras 151,342 Social Democratic Party (PSD) Social Democratic Party (PSD) Ponta Delgada 61,989 Social Democratic Party (PSD) Social Democratic Party (PSD) Portalegre 26,111 Social Democratic Party (PSD) Socialist Party (PS) Porto 302,472 Socialist Party (PS) Socialist Party (PS) Santarém 62,621 Socialist Party (PS) Socialist Party (PS) Santa Maria da Feira 135,964 Social Democratic Party (PSD) Social Democratic Party (PSD) Santo Tirso 102,593 Socialist Party (PS) Socialist Party (PS) Seixal 116,912 Unitary Democratic Coalition (CDU) Unitary Democratic Coalition (CDU) Setúbal 103,634 Socialist Party (PS) Socialist Party (PS) Sintra 260,951 Socialist Party (PS) Socialist Party (PS) Viana do Castelo 83,095 Socialist Party (PS) Socialist Party (PS) Vila Franca de Xira 103,571 Unitary Democratic Coalition (CDU) Socialist Party (PS) Vila Nova de Famalicão 114,338 Socialist Party (PS) Socialist Party (PS) Vila Nova de Gaia 248,565 Socialist Party (PS) Social Democratic Party (PSD) Vila Real 46,300 Social Democratic Party (PSD) Social Democratic Party (PSD) Viseu 83,601 Social Democratic Party (PSD) Social Democratic Party (PSD)

Municipal Assemblies National summary of votes and seats

! rowspan="2" colspan=2 style="background-color:#E9E9E9" align=left|Parties ! rowspan="2" style="background-color:#E9E9E9" align=right|Votes ! rowspan="2" style="background-color:#E9E9E9" align=right|% ! rowspan="2" style="background-color:#E9E9E9" align=right|±pp swing ! rowspan="2" style="background-color:#E9E9E9" align=right|Candidacies ! colspan="2" style="background-color:#E9E9E9" align="center"|Mandates |- style="background-color:#E9E9E9" ! style="background-color:#E9E9E9" align="center"|Total ! style="background-color:#E9E9E9" align="center"|±

|align=right|2,030,025 |align=right|37.85 |align=right|2.2 |align=right| |align=right|2,887 |align=right|246

|align=right|1,633,778 |align=right|30.46 |align=right|3.4 |align=right| |align=right|2,579 |align=right|102

|align=right|668,896 |align=right|12.47 |align=right|0.6 |align=right| |align=right|798 |align=right|5

|align=right|395,209 |align=right|7.37 |align=right|0.9 |align=right| |align=right|437 |align=right|120 |- |style="width: 10px" bgcolor=#FF66FF align="center" | |align=left|PS / CDU / UDP |align=right|163,411 |align=right|3.05 |align=right|0.7 |align=right| |align=right|30 |align=right|2 |- |style="width: 10px" bgcolor=#FF9900 align="center" | |align=left|Social Democratic / People's |align=right|124,472 |align=right|2.32 |align=right|— |align=right| |align=right|22 |align=right|— |- |style="width: 8px" bgcolor=#0093DD align="center" | |align=left|People's / Social Democratic |align=right|42,321 |align=right|0.79 |align=right|— |align=right| |align=right|13 |align=right|— |- |style="width: 10px" bgcolor= align="center" | |align=left|Popular Democratic Union |align=right|25,552 |align=right|0.48 |align=right|0.3 |align=right| |align=right|2 |align=right|0

|align=right|12,309 |align=right|0.23 |align=right|0.0 |align=right| |align=right|1 |align=right|0 |- |style="width: 8px" bgcolor= align="center" | |align=left|PSR / Politics XXI |align=right|11,150 |align=right|0.21 |align=right|— |align=right| |align=right|1 |align=right|—

|align=right|8,850 |align=right|0.16 |align=right|0.0 |align=right| |align=right|1 |align=right|1