The selection of tools and cutting data is a central activity in process planning and is often liable to an element of subjectivity. It is further complicated by the wide range of choice presented by the various operation types and the huge portfolio of cutters and inserts available from many different tool manufacturers. This paper describes a procedure to select consistently and efficiently tools for rough and finish milling operations performed on a computer numerical controlled (CNC) machining centre. A wide range of milling operations is considered, including faces, square shoulders, slots, T-slots, pockets, holes and profiles. An initial set of feasible tools is generated that satisfy the constraints of the tool type, the operation geometry, the insert geometry and carbide grade, the workpiece material and the machine tool capacity. Each tool consists of a holder and one or more indexable carbide inserts. Aggressive cutting data are generated for each feasible tool using a rapid search procedure in the permissible depth/width/feed space for good chip control. The cutting data are further refined by a set of technological constraints, which include tool life, surface finish, machine power and available spindle speeds and feeds. The overall cutting data optimization criterion is selected by the user from minimum cost, maximum production rate or predefined tool life. A new optimization criterion, called ‘harshness’, allows the user to influence the chip thickness that is achieved for any given cutter. Any feasible tools that fail to satisfy all the constraints and optimization criteria are discarded.